Задание №17 ЕГЭ Информатика с ответом и решением
Ответ: 308 18893
Условие
Файл содержит последовательность неотрицательных целых чисел, не превышающих 10 000. Назовём парой два идущих подряд элемента последовательности. Определите количество пар, в которых хотя бы один из двух элементов делится на 5, а их сумма делится на 7. В ответе запишите два числа: сначала количество найденных пар, а затем — максимальную сумму элементов таких пар.
Например, в последовательности (2 5 9 8 10) есть две подходящие пары: (2 5) и (5 9), в ответе для этой последовательности надо записать числа 2 и 14.
Подсказки — как подойти к решению
- Читай файл программой: числа идут по одному в строке. Парой считаются два соседних элемента, поэтому достаточно одного прохода от первого элемента до предпоследнего.
- Проверяй два условия сразу: на 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 по информатике