Тип 17 № 37336 
Обработки числовой последовательности. Задания для подготовки
i
Решение. Будем последовательно считывать числа из файла. Для каждой пары (двух подряд идущих элементов) будем проверять, делится ли хотя бы одно число из пары на 3. При успешном выполнении условия будем увеличивать значения счётчика count и проверять, больше ли сумма элементов пары текущей максимальной суммы. Если сумма элементов пары больше текущей максимальной суммы, будем обновлять значение переменной maxsum.
Приведём решение задачи на языке Pascal.
var
x, y, count: longint;
maxsum: longint;
f: text;
begin
assign(f,'C:\17.txt');
reset(f);
readln(f, x);
maxsum := -20001;
count := 0;
while not eof(f) do begin
readln(f, y);
if (x mod 3 = 0) or (y mod 3 = 0) then begin
count := count + 1;
if x + y > maxsum then maxsum := x + y;
end;
x := y;
end;
writeln(count, ' ', maxsum);
end.
В результате работы данного алгоритма при вводе данных из файла ответ — 2802 1990.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Николая Чуркина (Тимашевск) на языке Python.
count = 0
m = -20001
f = open('17.txt')
l = [int(i) for i in f]
for i in range(len(l) - 1):
if (l[i] % 3 == 0) or (l[i + 1] % 3 == 0):
count += 1
m = max(m, l[i]+ l[i + 1])
print(count, m)
Приведём решение Льва Сапегина на языке Python.
with open('17.txt','r') as file:
numbers = [int(line.strip()) for line in file]
count = 0
max_sum = 0
for i in range (len(numbers) -1):
x = numbers[i]
y = numbers[i+1]
if x % 3 == 0 or y % 3 == 0:
count += 1
max_sum = max(max_sum,x + y)
print(count,max_sum)
Приведём решение Сергея Донец на PascalABC.NET:
begin
var p:=ReadAllLines('17.txt').Select(x->x.tointeger);
var m:=p.Pairwise.Where(\(a,b)->a.divs(3)or b.divs(3));
m.count.print;
m.Max(\(a,b)->a+b).Print;
end.
Ответ: 2802&1990