9 мин чтения

ЕГЭ по информатике 2026 · задание 17 из 27

ЕГЭ по информатике 2026, задание 17: числовая последовательность

Задание 17 — повышенный уровень, 1 балл. Нужна небольшая программа: прочитать числовую последовательность и обработать пары, тройки или соседние элементы. Отдельного частичного балла нет: ответ целиком должен совпасть с эталоном.

В 2026 году данные приходят в `.txt`. Не ищите xls.

Обычно в ответе два числа через пробел: количество подходящих пар и максимальная сумма. Пишите их ровно в том порядке и с тем разделителем, которые указаны в условии.

Конспект

ФИПИ рекомендует схему из двух проходов:

1. Считать все числа в список. Один раз, без повторного чтения того же файла в середине логики.

2. Первым проходом найти порог, если он зависит от данных: максимальный элемент, оканчивающийся на 13, минимальный положительный и так далее.

3. Вторым проходом перебрать пары (a[i], a[i+1]) или тройки. Не смещайте индекс.

4. Отдельно копить количество и максимум или минимум. Максимум инициализируйте первым подходящим значением или очень маленьким числом, не нулём, если суммы бывают отрицательными. В этой линии числа чаще натуральные, но читайте тип.

5. Строгость сравнения: «больше» и «не меньше» дают разный ответ. «Оканчивается на 13» — это abs(x) % 100 == 13, не % 10.

Пара — два соседних элемента, если так сказано. Иногда пара — любые два различных элемента последовательности. Это квадратичный перебор, при длине нескольких тысяч он допустим, при десятках тысяч уже нет. В актуальных вариантах обычно соседние или тройки подряд, длина файла позволяет и квадрат, но не пишите его «на всякий случай», если просят соседей.

Шаблон на Python

nums = [int(x) for x in open("17.txt") if x.strip()]

# порог: например, максимальное число, оканчивающееся на 17
limit = max(x for x in nums if abs(x) % 100 == 17)

count = 0
best = None
for a, b in zip(nums, nums[1:]):
    cond = (a > limit) + (b > limit) == 1  # ровно одно больше порога
    if cond and (a + b) % 2 == 0:
        count += 1
        s = a + b
        if best is None or s > best:
            best = s

print(count, best)

Для троек цикл for a, b, c in zip(nums, nums[1:], nums[2:]). Не используйте range(len(nums)) с i+2, не проверив последний индекс: zip это уже делает.

Пустые строки в файле отфильтруйте. Повторный open в цикле не нужен и как раз даёт ошибку «неполного или повторного ввода», о которой пишет ФИПИ.

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

  • Пара (a[i], a[i]) или пропуск последней пары.
  • Порог считается внутри цикла по парам и меняется по ходу.
  • Строгое и нестрогое неравенство перепутаны.
  • Второе число ответа — номер пары, хотя просили сумму.
  • Файл открыт не в той кодировке. Для целых чисел это почти никогда не важно, для смешанного текста — да. Здесь достаточно построчного int.

Попробуйте объяснить с Мишкой

Бесплатный ИИ-репетитор объяснит любую тему так, как вам понятно — шаг за шагом.

Начать бесплатно