Записали выражение: $2014 - (2013) + 2012 - (2011) + … + 2 - (1)$ (знаки плюс и минус...

0 голосов
33 просмотров

Записали выражение: $2014 - (2013) + 2012 - (2011) + … + 2 - (1)$ (знаки плюс и минус чередуются). Можно поменять местами любые два числа (не трогая знаки), а затем вычислить значение получившегося выражения.
Какое максимальное число можно получить таким образом (можно сделать только один обмен)? В качестве ответа укажите одно целое число.
Комментарий. Если поменять 2 и 1, получится такое выражение: $2014 - (2013) + 2012 - (2011) + … + 1 - (2)$.


Математика (25 баллов) | 33 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Код
//PascalABC.NET версия 3.2, сборка 1389
//Если программа не запускается, то обновите версию
uses System;
const
    n = 2014;

begin
   
    var a := ArrGen(n, i -> i * Power(-1, i), 1);
    Println(a);
   
    var max := a.Sum();
    for var i := 1 to n - 1 do
        for var j := i + 1 to n do
        begin
            var b := Arr(a);
           
            for var k := b.Low to b.High do
            begin
                if abs(b[k]) = i then
                    b[k] := sign(b[k]) * j
                else if abs(b[k]) = j then
                    b[k] := sign(b[k]) * i;
            end;
           
            var sum := b.Sum();
            if (max < sum) and (sum > 2000) then begin
                Println(i, j, sum);
                Println(b);
                max := sum;
            end;
        end;
    Println(max);
end.

Ответ
Обмен (2; 2013)
Сумма = 5029


(55.0k баллов)