πЕГЭ · ИИ-репетитор12 предметов · задания ФИПИ
Главная → Информатика → Задания №17 → Задание i17-13

Задание №17 ЕГЭ Информатика с ответом и решением

Ответ: 308 18893

Условие

Файл содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, в которых хотя бы один из двух элементов делится на 5, а их сумма делится на 7. В ответе запишите два числа: сначала количество найденных пар, а затем — максимальную сумму элементов таких пар.

Например, в последовательности (2 5 9 8 10) есть две подходящие пары: (2 5) и (5 9), в ответе для этой последовательности надо записать числа 2 и 14.

Подсказки — как подойти к решению

  1. Читай файл программой: числа идут по одному в строке. Парой считаются два соседних элемента, поэтому достаточно одного прохода от первого элемента до предпоследнего.
  2. Проверяй два условия сразу: на 5 должен делиться хотя бы один элемент пары, а сумма пары — на 7. Максимум суммы обновляй только тогда, когда пара прошла проверку целиком.

Решение

Решим задачу перебором. Приведём решение данной задачи на языке PascalABC:

var

x, y, count, maxsum: integer;

f: text;

begin

assign(f,'C:\17.txt');

reset(f);

count := 0;

maxsum := 0;

readln(f, x);

while not eof(f) do begin

readln(f, y);

if ((x mod 5 = 0) or (y mod 5 = 0)) and ((x + y) mod 7 = 0) then begin

count := count + 1;

if (x + y > maxsum) then maxsum := x + y;

end;

x := y;

end;

writeln(count, ' ', maxsum);

end.

Результат работы программы — 308 18893.

Ответ: 308 18893.

Приведём решение на языке Python.

f = open("17(6).txt")

s = f.readlines()

k = 0

maxi = 0

for i in range(len(s)):

s[i] = int(s[i])

for i in range(len(s) - 1):

if (s[i] % 5 == 0 or s[i + 1] % 5 == 0) and ((s[i] + s[i + 1]) % 7 == 0):

k += 1

maxi = max(maxi, s[i] + s[i + 1])

print(k, maxi)

Приведём решение Сергея Донец на PascalABC.NET:

begin

var p:=ReadAllText('17.txt').ToIntegers.Pairwise

.Where(\(x,y)->(x.divs(5)or y.divs(5))and(x+y).divs(7));

p.Count.Print;

p.Max(\(x,y)->x+y).Print;

end.

Типичные ошибки

Решить это задание в тренажёре

В тренажёре: подсказки по шагам, разбор твоей ошибки ИИ-репетитором (он не даёт готовый ответ), повторение ошибок по интервалам и общий прогресс. Все задания №17 по информатике