// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 begin var n:=ReadInteger('Количество элементов='); var b:=ArrRandomReal(n,-10,20); b.Println(', '); var mx:=b.Max; var c:=b.Where(x->x<>mx); c.Println(', ') end.
Чтобы число получилось максимальным, нужно поменять самое большое вычитаемое число и самое маленькое прибавляемое. То есть 2015 и 2.
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1. Таких пар будет 2016 : 2 = 1008 1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1) Теперь поменяем местами 2015 и 2, найдём значение выражения:
begin
var n:=ReadInteger('Количество элементов=');
var b:=ArrRandomReal(n,-10,20);
b.Println(', ');
var mx:=b.Max;
var c:=b.Where(x->x<>mx);
c.Println(', ')
end.
Тестовое решение:
Количество элементов= 13
-3.19967562016085, 0.998729616868649, 17.2918094030078, 1.10658910642685, 10.4760369241592, 6.72070787601206, 8.34657945593194, 12.5555840984711, 13.4678390079494, -1.30778588881147, 19.5660732731065, 18.4909354934892, 9.13206894841607
-3.19967562016085, 0.998729616868649, 17.2918094030078, 1.10658910642685, 10.4760369241592, 6.72070787601206, 8.34657945593194, 12.5555840984711, 13.4678390079494, -1.30778588881147, 18.4909354934892, 9.13206894841607
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1.
Таких пар будет 2016 : 2 = 1008
1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1)
Теперь поменяем местами 2015 и 2, найдём значение выражения:
1006 + (2016 - 2) + (2015 - 1) = 1006 + 2014 + 2014 = 5034