Разборы · ЕГЭ, задание 17
Задание 17 ЕГЭ по информатике: обработка последовательности из файла
Что проверяет задание
К заданию приложен текстовый файл с последовательностью целых чисел. Нужно найти пары (или тройки) подряд идущих элементов с заданным свойством и записать два числа: количество таких пар и, например, максимальную сумму в них. 1 балл — только если оба числа верны.
Что нужно знать
- Чтение файла:
a = [int(s) for s in open("17.txt")]— по числу в строке. - Пары соседей —
zip(a, a[1:]); тройки —zip(a, a[1:], a[2:]). - Характеристики всей последовательности (минимум, максимум, среднее) считаются заранее, до цикла по парам.
- Остаток от деления —
%; последняя цифра числа —abs(x) % 10(у отрицательных чисел % в Python даёт положительный остаток — будьте внимательны). - Частые условия: «элемент оканчивается на 3» —
abs(x) % 10 == 3; «трёхзначное число» —100 <= abs(x) <= 999; «больше среднего арифметического всех чисел» — среднееsum(a) / len(a)считают один раз до цикла.
Как решать
- Прочитайте файл и посчитайте нужные характеристики всей последовательности.
- Пройдите по парам, проверьте условие, копите количество и максимум (минимум).
- Запишите два числа через пробел в том порядке, который указан в условии.
Пример из демоверсии 2027
В файле последовательность натуральных чисел от 1 до 100 000. Определите количество пар, в которых остаток от деления на 33 хотя бы одного элемента равен минимальному элементу последовательности, и максимальную сумму элементов таких пар. Пара — два идущих подряд элемента.
a = [int(s) for s in open("17.txt")]
mn = min(a)
count, best = 0, 0
for x, y in zip(a, a[1:]):
if x % 33 == mn or y % 33 == mn:
count += 1
best = max(best, x + y)
print(count, best)
Для файла демоверсии программа выводит 622 174933.
Типичные ошибки
- Считают пары из любых двух элементов, а не соседей.
- Путают «хотя бы один элемент» (
or) и «оба элемента» (and). - Начинают поиск максимума с 0, хотя числа в файле могут быть отрицательными. В таких вариантах начинайте с
-10**9. - Путают порядок чисел в ответе.
Потренироваться: задание 17 новые варианты с проверкой ответа