Записали выражение: $2014 - (2013) + 2012 - (2011) + … + 2 - (1)$ (знаки плюс и минус чередуются). можно поменять местами любые два числа (не трогая знаки), а затем вычислить значение получившегося выражения. какое максимальное число можно получить таким образом (можно сделать только один обмен)? в качестве ответа укажите одно целое число. комментарий. если поменять 2 и 1, получится такое выражение: $2014 - (2013) + 2012 - (2011) + … + 1 - (2)$.
//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