Перейти к содержимому

Задание 17 ЕГЭ по информатике 2027: обработка последовательности из файла

Задание 17до 1 баллаобработка последовательности из файла
Раздел
Алгоритмы и программирование
Максимальный балл
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.

Задание выполняется с использованием прилагаемого файла

17.txt30 КБ

1. Читаем числа в список. 2. До перебора находим минимум всей последовательности — опорное значение. 3. По парам соседних элементов проверяем, что остаток от деления на 31 хотя бы у одного равен минимуму. 4. Подходящие пары считаем и запоминаем наибольшую сумму.

На примере: минимум равен 5, подходят пары (5, 31) с суммой 36, (31, 36) с суммой 67 и (36, 10) с суммой 46; максимальная сумма 67, ответ — 3 67.

Решение на Python
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.

Задание выполняется с использованием прилагаемого файла

17.txt34 КБ

1. Читаем числа в список. 2. Заводим признак: последняя цифра записи числа равна 6 (для отрицательных — по модулю). 3. Для пары складываем значения признака: сумма 1 означает «ровно один». 4. Пара идёт в счёт, если ещё и её сумма кратна 7.

На примере: подходят пары (16, 5) с суммой 21 и (26, 2) с суммой 28; пара (5, 26) не подходит — 31 на 7 не делится. Ответ — 2 21.

Решение на Python
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.

Задание выполняется с использованием прилагаемого файла

17.txt23 КБ

1. Читаем числа в список. 2. Признак элемента: остаток от деления на 12 равен 5. 3. Идём по тройкам соседних элементов — их на две меньше, чем чисел. 4. Считаем, сколько элементов тройки обладают признаком, и проверяем кратность суммы девяти.

На примере: признак есть у 5 и 41. У тройки (5, 4, 9) признак у первого элемента, сумма 18 кратна 9; у (4, 9, 41) — у последнего, сумма 54 кратна 9. Ответ — 2 18.

Решение на Python
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:]) даёт пары соседних чисел. Условие пары и что выводить — из условия; минимум или максимум по всей последовательности считаете до цикла.

Python
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

Шаблоны кода ко всем заданиям

Как выполнять задание

  1. Откройте файл из рабочей папки и прочитайте числа в список: a = [int(s) for s in open('17.txt') if s.strip()]. В каждой строке одно число.
  2. Один раз найдите опорное значение из условия — минимум последовательности или максимум с признаком: m = min(a), m = max(x for x in a if x % 31 == 0).
  3. Перебирайте группы соседних элементов: пары — zip(a, a[1:]), тройки — zip(a, a[1:], a[2:]), и в теле цикла проверяйте условие на элементы и на сумму группы.
  4. Сравнения — точные: остаток равен минимуму, сумма строго больше опорного числа. Счётчик и лучшую сумму набирайте в одном проходе.
  5. Проверьте программу на маленьком типовом примере вручную, потом запускайте на файле; ответ внесите в две клетки — количество, затем сумма.

Что нужно знать

  • Соседние элементы. Пар соседних элементов среди 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 году.

Другие задания раздела «Алгоритмы и программирование»

По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено:

Все задания ЕГЭ по информатике →