//PascalABC.Net 3.2 {1} begin var a:=readArrinteger('Вводите: ', readinteger('n =')); write ('Ср. арифметическое: ', a.Average); end.
{2} begin var a:=readarrinteger('Водите: ', readinteger('n =')); var sum:=0; for var i:=0 to length(a)-1 do if i.isodd then sum+=a[i]; write ('Сумма: ', sum); end.
{3} begin var a:=readarrinteger('Вводите: ', readinteger('Кол-во элементов: ')); var otr:=0; var pol:=0; for var i:=0 to length(a)-1 do if a[i]<0 then otr+=1 else pol+=1; write('Массив: '); a.Println; if otr=pol then write ('Отрицательных и положительных элементов равное кол-во') else if otr>pol then write('Отрицательных больше на ', otr-pol) else write ('Положительных больше на ', pol-otr); end.
Будем суммировать все положительные числа, пока не встретится 0. Если полученная сумма сразу делится на 3, то нам повезло. Если нет, надо что-то делать - либо прибавлять отрицательные числа, либо вычитать положительные. Я не буду делать различия между ними - в любом случае надо вычитать модули чисел. - Если сумма дает остаток 1, то надо вычесть или одно число с остатком 1, или два числа с остатком 2 (вычитать три или более числа нерационально: числа, делящиеся на 3, картину не портят; вычитание трёх чисел с одинаковым остатком не влияет на остаток суммы, а среди трёх чисел с остатком 1 или 2 всегда найдутся два одинаковых). - Аналогично (с точностью до перестановки 1 и 2) поступаем, если сумма даёт остаток 2. Если после этих всех ухищрений сумма стала отрицательной, просто выводим 0, как будто мы взяли только последний 0.
Код (PascalABC.NET 3.2) begin var sum := 0; var mins := MatrFill(2, 2, MaxInt div 2); var temp: integer; repeat temp := readinteger; if temp > 0 then sum := sum + temp; temp := abs(temp); var i := temp mod 3 - 1; if i > -1 then if temp < mins[i, 0] then (mins[i, 0], mins[i, 1]) := (temp, mins[i, 0]) else if temp < mins[i, 1] then mins[i, 1] := temp; until temp = 0; var i := sum mod 3 - 1; if i > -1 then sum := max(sum - mins[i, 0], sum - mins.Row((i + 1) mod 2).Sum); writeln(max(sum, 0)) end.
1. Вперед 2 шага
2. Влево 2 шага
3. Прямо 2 шага
4. Вправо 2 шага
5. Вперед 4 шага
Если нужно уложиться во все 9:
1. Вперед 2 шага
2. Влево 2 шага
3. Прямо 2 шага
4. Влево 3 шага
5. Вперед 4 шага
6. Вправо 3 шага
7. Вниз 2 шага
8. Вправо 2 шага
9. Вперед 1 шаг