Файл содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, в которых один из двух элементов делится
Например, в последовательности
Ответ:
Решим в два прохода. В первом проходе найдём среднее арифметическое значение всех нечётных элементов последовательности, а во втором проходе найдём количество пар и максимальную сумму элементов таких пар. Приведём решение данной задачи на языке PascalABC:
var
x, y, count, maxsum: integer;
average: real;
f: text;
begin
assign(f,'C:\17.txt');
reset(f);
count := 0;
average := 0;
while not eof(f) do begin
readln(f, x);
if x mod 2 <> 0 then begin
average := average + x;
count := count + 1;
end;
end;
close(f);
average := average / count;
count := 0;
maxsum := 0;
reset(f);
readln(f, x);
while not eof(f) do begin
readln(f, y);
if ((x mod 5 = 0) and (y < average)) or ((x < average) and (y mod 5 = 0)) then begin
count := count + 1;
if (x + y > maxsum) then maxsum := x + y;
end;
x := y;
end;
writeln(count, ' ', maxsum);
end.
Результат работы программы —
Ответ:
Приведём решение на языке Python.
with open("17.txt") as f:
p = f.readlines()
summ = 0
kol = 0
for i in range(0, len(p)):
if int(p[i]) % 2 != 0:
summ += int(p[i])
kol += 1
summ //= kol
k = 0
maxx = -20000
for i in range(len(p) - 1):
a = int(p[i])
b = int(p[i + 1])
if (a % 5 == 0 and b < summ) or (b % 5 == 0 and a < summ):
k += 1
if a + b > maxx:
maxx = a + b
print(k, maxx)
В результате работы данного алгоритма при вводе данных из файла ответ — 1061 14847.
Примечание.
Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.

