Задание 17 ЕГЭ по информатике 2027: обработка последовательности из файла
- Раздел
- Алгоритмы и программирование
- Максимальный балл
- 1 балл
- Уровень
- повышенный
- Что проверяет
- Умение составить алгоритм обработки числовой последовательности и записать его в виде простой программы (10–15 строк) на языке программирования
- Что нужно сделать
- Написать программу: в файле — последовательность целых чисел, найти количество пар или троек по условию и экстремальную сумму.
- Как записать ответ
- два числа в две клетки таблицы ответа, в порядке из условия
- Время
- Около 13 минут по обобщённому плану ФИПИ
- Элемент кодификатора
- 3.10
- Компьютер
- Нужна программа или электронная таблица: на станции КЕГЭ — среды программирования на C#, C++, Pascal, Java, Python и редактор таблиц
- Файл к заданию
- текстовый файл .txt — его читает программа
- В 2026 году
- Тоже задание 17
Задание 17 ЕГЭ по информатике 2027 года проверяет, по формулировке обобщённого плана ФИПИ, «умение составить алгоритм обработки числовой последовательности и записать его в виде простой программы (10–15 строк) на языке программирования». К заданию приложен текстовый файл: около 10 000 строк, в каждой — одно целое число. Программа находит пары или тройки идущих подряд элементов с заданным свойством и называет их количество, а вместе с ним наибольшую или наименьшую сумму таких групп.
Уровень повышенный, специализированное ПО предусмотрено, в обобщённом плане на задание отведено 13 минут (в 2026 году — 14). Ответ — два числа в двух клетках таблицы, в порядке из условия; он сверяется с эталоном целиком. В 2026 году задание стояло под этим же номером, среди изменённых тем 2027 года оно не названо, а про структуру работы сказано «Изменения структуры КИМ отсутствуют».
Средний процент выполнения в 2026 году — 35,5, в 2025 году — 28,8. Методические рекомендации ФИПИ по итогам 2026 года относят к темам, которым нужно уделить особое внимание, практическое программирование: работу с файлами при вводе и выводе данных, работу с массивами, сортировку, обработку числовой и символьной информации. Ниже — три типа задания с решением на Python: код запускается прямо на странице на файле примера.
Тренажёр задания 17
Десять заданий номера 17 из банка тренажёра — с файлами, как на станции КЕГЭ. Решайте в песочнице Python прямо на странице или у себя; ответ проверяется по ключу, после проверки — верный ответ, разбор и решение на Python, а при ошибке — разбор от ИИ. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.
Задание 17 вместе с остальными — в вариантах целиком.
Типы задания 17 с решением
Пары с опорным числом: минимальный или максимальный элемент последовательности
В файле — последовательность целых чисел, по одному в строке. Найдите количество пар соседних элементов, в которых остаток от деления на 31 хотя бы одного элемента равен минимальному элементу последовательности, и максимальную сумму таких пар.
5 31 36 10 62 7
Для этого примера ответ — 3 67.
Задание выполняется с использованием прилагаемого файла
1. Читаем числа в список. 2. До перебора находим минимум всей последовательности — опорное значение. 3. По парам соседних элементов проверяем, что остаток от деления на 31 хотя бы у одного равен минимуму. 4. Подходящие пары считаем и запоминаем наибольшую сумму.
На примере: минимум равен 5, подходят пары (5, 31) с суммой 36, (31, 36) с суммой 67 и (36, 10) с суммой 46; максимальная сумма 67, ответ — 3 67.
with open('17.txt') as f:
a = [int(s) for s in f if s.strip()]
m = min(a) # опорное число: минимум всей последовательности
count = 0 # сколько пар подошло
best = 0 # наибольшая сумма подходящей пары
for i in range(len(a) - 1): # пары соседних элементов
x, y = a[i], a[i + 1]
if x % 31 == m or y % 31 == m: # «хотя бы один»
count += 1
if x + y > best:
best = x + y
print(count, best)
Ответ на приложенном файле: 596 19400
Пары соседних элементов с условием на сами элементы
В файле — последовательность чисел, по одному в строке. Найдите количество пар соседних элементов, в которых ровно один элемент оканчивается на 6, а сумма пары кратна 7, и минимальную сумму таких пар.
16 5 26 2
Для этого примера ответ — 2 21.
Задание выполняется с использованием прилагаемого файла
1. Читаем числа в список. 2. Заводим признак: последняя цифра записи числа равна 6 (для отрицательных — по модулю). 3. Для пары складываем значения признака: сумма 1 означает «ровно один». 4. Пара идёт в счёт, если ещё и её сумма кратна 7.
На примере: подходят пары (16, 5) с суммой 21 и (26, 2) с суммой 28; пара (5, 26) не подходит — 31 на 7 не делится. Ответ — 2 21.
with open('17.txt') as f:
a = [int(s) for s in f if s.strip()]
def ends_with_6(x):
# последняя цифра записи числа (у отрицательных — по модулю)
return abs(x) % 10 == 6
count = 0 # сколько пар подошло
best = None # наименьшая сумма подходящей пары
for x, y in zip(a, a[1:]): # пары соседних элементов
one = ends_with_6(x) + ends_with_6(y) # сколько элементов подходят
if one == 1 and (x + y) % 7 == 0:
count += 1
if best is None or x + y < best:
best = x + y
print(count, best)
Ответ на приложенном файле: 200 -110341
Тройки соседних элементов
В файле — последовательность натуральных чисел, по одному в строке. Найдите количество троек соседних элементов, в которых ровно один элемент даёт остаток 5 при делении на 12, а сумма тройки кратна 9, и минимальную сумму таких троек.
5 4 9 41
Для этого примера ответ — 2 18.
Задание выполняется с использованием прилагаемого файла
1. Читаем числа в список. 2. Признак элемента: остаток от деления на 12 равен 5. 3. Идём по тройкам соседних элементов — их на две меньше, чем чисел. 4. Считаем, сколько элементов тройки обладают признаком, и проверяем кратность суммы девяти.
На примере: признак есть у 5 и 41. У тройки (5, 4, 9) признак у первого элемента, сумма 18 кратна 9; у (4, 9, 41) — у последнего, сумма 54 кратна 9. Ответ — 2 18.
with open('17.txt') as f:
a = [int(s) for s in f if s.strip()]
def is_good(x):
# даёт остаток 5 при делении на 12
return x % 12 == 5
count = 0 # сколько троек подошло
best = None # наименьшая сумма подходящей тройки
for i in range(len(a) - 2): # тройки соседних элементов
t = a[i] + a[i + 1] + a[i + 2]
k = is_good(a[i]) + is_good(a[i + 1]) + is_good(a[i + 2])
if k == 1 and t % 9 == 0:
count += 1
if best is None or t < best:
best = t
print(count, best)
Ответ на приложенном файле: 125 18
Шаблон кода на Python
Пары соседних элементов из файла
zip(a, a[1:]) даёт пары соседних чисел. Условие пары и что выводить — из условия; минимум или максимум по всей последовательности считаете до цикла.
with open('17.txt') as f:
a = [int(line) for line in f if line.strip()]
big = max(x for x in a if abs(x) % 10 == 5) # наибольший, оканчивающийся на 5
count, best = 0, 0
for x, y in zip(a, a[1:]):
if (x % 3 == 0) != (y % 3 == 0) and x + y < big:
count += 1
best = max(best, x + y)
print(count, best)Файл-пример 17.txt
12 45 -7 30 18 -21 9 60
2 38
Как выполнять задание
- Откройте файл из рабочей папки и прочитайте числа в список: a = [int(s) for s in open('17.txt') if s.strip()]. В каждой строке одно число.
- Один раз найдите опорное значение из условия — минимум последовательности или максимум с признаком: m = min(a), m = max(x for x in a if x % 31 == 0).
- Перебирайте группы соседних элементов: пары — zip(a, a[1:]), тройки — zip(a, a[1:], a[2:]), и в теле цикла проверяйте условие на элементы и на сумму группы.
- Сравнения — точные: остаток равен минимуму, сумма строго больше опорного числа. Счётчик и лучшую сумму набирайте в одном проходе.
- Проверьте программу на маленьком типовом примере вручную, потом запускайте на файле; ответ внесите в две клетки — количество, затем сумма.
Что нужно знать
- Соседние элементы. Пар соседних элементов среди N чисел — N − 1, троек — N − 2; перебор всех пар, не только соседних, даст другой ответ.
- Опорное значение. Минимум или максимум всей последовательности ищется один раз, до перебора групп, и участвует в условии каждой группы.
- Признаки элемента. Последняя цифра — |x| mod 10; число знаков — по модулю (трёхзначное: 100 ≤ |x| ≤ 999); кратность — x mod k = 0; остаток — x mod k = r.
- Отрицательные числа. В Python −13 mod 10 даёт 7, поэтому «оканчивается на 3» проверяют как |x| mod 10 = 3. Два числа ответа набираются в одном проходе, а порядок фиксирует условие.
Проверить решение можно на демоверсии КЕГЭ 2027 на сайте — с файлом и песочницей Python.
Как оценивается
Проверка автоматическая, по ключу: ответ должен быть записан в форме из условия и полностью совпасть с эталоном. Код и черновики не проверяют — значение имеет только ответ. За верный ответ — 1 балл, частичного балла нет.
Критерии всех заданий экзамена — на странице критериев ЕГЭ.
Разбор задания демоверсии 2027
В демоверсии 2027 года приложен файл demo_17.txt: около 10 000 натуральных чисел от 1 до 100 000, по одному в строке. Нужно посчитать пары соседних элементов, в которых остаток от деления на 33 хотя бы одного элемента равен минимальному элементу последовательности, и назвать количество таких пар и наибольшую из их сумм.
Проверим правило на пяти своих числах: 60, 99, 18, 7, 40. Минимум последовательности равен 7, он и служит опорным значением. В паре (60, 99) остатки 27 и 0 — не подходит; в (99, 18) — 0 и 18; в (18, 7) остаток 7 даёт второй элемент, сумма 25; в (7, 40) — первый элемент, сумма 47. Итого две пары, наибольшая сумма 47. Минимум ищется по всей последовательности, а не по элементам пар.
На файле демоверсии та же программа, что в первом типе ниже, с делителем 33 даёт 622 174933 — это ключ ФИПИ.
Типичные ошибки
Пары перебирают не по соседним элементам
Пара — это два идущих подряд элемента. Два вложенных цикла по всем парам дадут другое количество и другую сумму. Соседние: zip(a, a[1:]) для пар, zip(a, a[1:], a[2:]) для троек.
Опорное значение пересчитывают внутри цикла
Минимум или максимум с признаком относится ко всей последовательности и находится до перебора: m = min(a). Если обновлять его по ходу, условие станет другим.
Последняя цифра отрицательного числа
x % 10 у отрицательного числа даёт не последнюю цифру: −13 % 10 равно 7. Признак «оканчивается на» пишут через abs(x) % 10, число знаков — через 100 <= abs(x) <= 999.
Путают «хотя бы один» и «ровно один»
Для «ровно один» складывают значения признака у элементов группы: good(x) + good(y) == 1. При «хотя бы один» подходят и группы, где признак есть у обоих.
Перепутаны числа в ответе
Сначала количество групп, затем сумма — ровно в порядке из условия (иногда минимальная). Проверка: количество целое неотрицательное, сумма — сумма двух или трёх чисел файла.
Вопросы и ответы
Как решать задание 17 ЕГЭ по информатике?
Программой на Python: прочитать файл в список, один раз найти опорное значение из условия, перебрать пары или тройки соседних элементов, отобрать подходящие по условию на элементы и на сумму и напечатать количество и лучшую сумму.
Есть ли шаблон программы для задания 17?
Шаблон сводится к четырём шагам: чтение файла, поиск опорного значения, цикл по zip с проверкой условия, print(count, best). В трёх разборах на странице код отличается только признаком элемента, делителем и тем, что ищут — максимум или минимум суммы.
Можно ли решить задание 17 без программы?
Нет: в файле около 10 000 чисел, а вручную проверяют только маленький пример. Программа нужна, чтобы перебрать все пары или тройки соседних элементов и найти среди них лучшую сумму.
Сколько баллов даёт задание 17 и сколько на него времени?
За верный ответ — 1 балл, частичного балла нет: два числа должны полностью совпасть с эталоном, включая порядок. По обобщённому плану отводится 13 минут, уровень повышенный.
Что изменилось в задании 17 в 2027 году?
Структурно ничего: «Изменения структуры КИМ отсутствуют», смена тем коснулась только заданий 10, 13 и 23. Время по обобщённому плану — 13 минут против 14 в 2026 году.
Другие задания раздела «Алгоритмы и программирование»
- Задание 5алгоритм над двоичной записью числа · до 1 балла
- Задание 6исполнитель Черепаха · до 1 балла
- Задание 12исполнитель Редактор и машина Тьюринга · до 1 балла
- Задание 13число программ исполнителя · до 1 балла
- Задание 16рекурсивные функции · до 1 балла
- Задание 24обработка строки из файла · до 1 балла
- Задание 25делители и маски чисел · до 1 балла
- Задание 26сортировка и жадный выбор · до 2 баллов
По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено: