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

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

Задание 24до 1 баллаобработка строки из файла
Раздел
Алгоритмы и программирование
Максимальный балл
1 балл
Уровень
высокий
Что проверяет
Умение создавать собственные программы (10–20 строк) для обработки символьной информации
Что нужно сделать
Написать программу: в файле — длинная строка символов, найти самую длинную подстроку или цепочку по условию.
Как записать ответ
только число: целое, без пробелов и единиц измерения
Время
Около 18 минут по обобщённому плану ФИПИ
Элемент кодификатора
3.9
Компьютер
Нужна программа или электронная таблица: на станции КЕГЭ — среды программирования на C#, C++, Pascal, Java, Python и редактор таблиц
Файл к заданию
текстовый файл .txt — его читает программа
В 2026 году
Тоже задание 24

Задание 24 ЕГЭ по информатике 2027 года проверяет, по формулировке обобщённого плана ФИПИ, «умение создавать собственные программы (10–20 строк) для обработки символьной информации». К заданию приложен текстовый файл, в котором ровно одна строка: в демоверсии 2027 года это почти десять миллионов символов, в вариантах файл тоже большой — сотни тысяч и миллионы знаков. Программа должна найти самую длинную подходящую последовательность символов или посчитать, сколько таких последовательностей в строке; в ответ идёт одно целое число.

Уровень задания по обобщённому плану — высокий, специализированное ПО для него предусмотрено, на работу отводится около 18 минут, верный ответ даёт 1 балл. По данным методических рекомендаций ФИПИ по итогам 2026 года это самое трудное задание работы: его выполняют в среднем 4,6 % участников. Среди тем, которым ФИПИ советует «уделить особое внимание», названа обработка символьной информации.

Изменения 2027 года задание 24 не затронули: спецификация повторяет, что «Изменения структуры КИМ отсутствуют», а смена тематики коснулась заданий 10, 13 и 23. Ниже — три типа задания с разбором и решением на Python; код можно запустить прямо на странице. Разбор задания демоверсии и типичные ошибки — дальше, тренажёр с заданиями банка — сразу под этим текстом, а проверить себя на целом варианте можно в демоверсии КЕГЭ 2027 на сайте.

Тренажёр задания 24

Десять заданий номера 24 из банка тренажёра — с файлами, как на станции КЕГЭ. Решайте в песочнице Python прямо на странице или у себя; ответ проверяется по ключу, после проверки — верный ответ, разбор и решение на Python, а при ошибке — разбор от ИИ. Кнопка «Ещё 5 таких» у типа задания ниже даёт задания одного типа.

Загружаем задание…

Задание 24 вместе с остальными — в вариантах целиком.

Типы задания 24 с решением

Самая длинная корректная цепочка символов

Пример условия

В файле — одна длинная строка из цифр и знаков арифметических операций. Найдите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами: никакие два знака операций не стоят рядом, в записи чисел нет незначащих (ведущих) нулей, и число 0 не имеет знака.

30-05+86-3+60

Для этого примера ответ — 9.

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

24.txt273 КБ

1. Идём по строке один раз и храним три длины корректных цепочек, которые оканчиваются на текущем символе: zero — цепочка кончается числом 0, pos — положительным числом, op — знаком операции. 2. Знак можно приписать только к законченной цепочке: если max(zero, pos) > 0, то новая длина op = max(zero, pos) + 1, иначе op = 0; zero и pos после знака обнуляются. 3. Цифра 0 — либо отдельное число (в начале строки или сразу после знака), либо очередная цифра положительного числа; продолжить само число 0 нельзя — вышел бы ведущий ноль. 4. Ненулевая цифра продолжает положительное число или начинает новое после знака. Ответ — наибольшая из длин цепочек, которые кончаются числом.

На примере: строка 30-05+86-3+60 целиком негодна — в ней есть число 05 с ведущим нулём. Самая длинная подходящая цепочка — 5+86-3+60 из девяти символов: числа 5, 86, 3 и 60 разделены одиночными знаками. Это тип задания из демоверсии 2027 года.

Решение на Python
with open('24.txt') as f:
    s = f.read().strip()

# Три длины корректных цепочек, оканчивающихся на текущем символе:
# zero — цепочка кончается нулём, pos — положительным числом, op — знаком.
zero = pos = op = 0
best = 0
for c in s:
    if c in '+-':
        # знак ставится только после законченного числа
        last = max(zero, pos)
        zero, pos, op = 0, 0, last + 1 if last else 0
    elif c == '0':
        # 0 — отдельное число (после знака) или очередная цифра положительного числа
        zero, pos, op = op + 1, pos + 1 if pos else 0, 0
    else:
        # ненулевая цифра продолжает положительное число или начинает новое
        zero, pos, op = 0, max(pos, op) + 1, 0
    best = max(best, zero, pos)
print(best)

Ответ на приложенном файле: 265

Самая длинная подстрока без заданной последовательности

Пример условия

Файл — одна строка из заглавных латинских букв. Найдите максимальное количество идущих подряд символов, среди которых ни разу не встречается последовательность «CAB».

BCABCCAB

Для этого примера ответ — 5.

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

24.txt252 КБ

1. Окно допустимых символов расширяем вправо, следя, чтобы шаблон целиком в него не попал. 2. Как только шаблон заканчивается в текущем символе, левую границу окна переносим на один символ правее начала этого вхождения: раньше начинать нельзя, а такое окно шаблона уже не накрывает. 3. Граница двигается только вперёд, поэтому проход по строке один, а поиск вхождения делает готовая функция поиска подстроки.

На примере: в строке BCABCCAB шаблон «CAB» встречается дважды — в позициях 2–4 и 6–8 при нумерации с единицы. Самая длинная подстрока, которая шаблона не содержит, — ABCCA из пяти символов: она начинается сразу после начала первого вхождения и кончается символом перед вторым вхождением, ничего длиннее в примере нет.

Решение на Python
with open('24.txt') as f:
    s = f.read().strip()

pattern = 'CAB'
L = len(pattern)
best = 0
start = 0  # левая граница текущего окна
p = s.find(pattern)
while p != -1:
    # окно [start, p + L - 2] шаблона не содержит
    best = max(best, p + L - 1 - start)
    start = p + 1  # дальше можно начинать только за началом найденного шаблона
    p = s.find(pattern, start)
best = max(best, len(s) - start)  # хвост строки после последнего шаблона
print(best)

Ответ на приложенном файле: 937

Количество подстрок с заданным числом букв

Пример условия

Файл — одна строка из заглавных латинских букв от A до T. Подстрокой называем непрерывную последовательность символов файла. Найдите количество подстрок, в которых ровно 2 буквы P.

PABPARP

Для этого примера ответ — 6.

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

24.txt278 КБ

1. Выписываем позиции всех букв P и добавляем по краям две границы: -1 и длину строки. Позиции считаем от нуля. 2. Подстрока ровно с двумя буквами P должна начинаться между предыдущей буквой и первой буквой пары, а заканчиваться между второй буквой пары и следующей за ней буквой. 3. Число таких подстрок — произведение числа мест для левого конца на число мест для правого; складываем по всем парам соседних букв. Строка при этом просматривается один раз — на этапе выписывания позиций.

На примере: в строке PABPARP буквы P стоят в позициях 0, 3 и 6. Для пары 0 и 3 слева один вариант, справа три: 1 × 3 = 3. Для пары 3 и 6 — три слева и один справа: 3 × 1 = 3. Итого 6.

Решение на Python
with open('24.txt') as f:
    s = f.read().strip()

X = 'P'
need = 2
n = len(s)

# позиции всех букв X, обрамлённые границами -1 и n
pos = [-1] + [i for i, c in enumerate(s) if c == X] + [n]

total = 0
for j in range(1, len(pos) - need):
    # подстрока содержит ровно need букв X — от pos[j] до pos[j + need - 1]
    left_ways = pos[j] - pos[j - 1]            # сколько мест для левого конца
    right_ways = pos[j + need] - pos[j + need - 1]  # сколько мест для правого
    total += left_ways * right_ways
print(total)

Ответ на приложенном файле: 5891042

Шаблон кода на Python

Самая длинная цепочка в строке из файла

Идёте по строке и держите длину текущей подходящей цепочки: символ подходит — длина растёт, нет — начинается заново. Сложные условия — то же окно с двумя указателями.

Python
with open('24.txt') as f:
    s = f.read().strip()

# 1) самая длинная цепочка без двух одинаковых символов рядом
best = cur = 1
for i in range(1, len(s)):
    cur = cur + 1 if s[i] != s[i - 1] else 1
    best = max(best, cur)
print(best)

# 2) самая длинная подстрока, где Z встречается не больше двух раз
left = zs = best = 0
for right, c in enumerate(s):
    zs += c == 'Z'
    while zs > 2:
        zs -= s[left] == 'Z'
        left += 1
    best = max(best, right - left + 1)
print(best)
Файл-пример 24.txt
XYZZXYXYZXZZYX
Вывод на файле-примере
8
8

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

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

  1. Сохраните приложенный файл в рабочую папку и откройте его одной строкой: s = open('24.txt').read().strip(). Файл состоит из одной строки, поэтому readline() и read() дают одно и то же, а strip() убирает перевод строки в конце, чтобы он не попал в подсчёт.
  2. Определите по вопросу, что именно считать: длину самой длинной подходящей подстроки, количество подходящих подстрок или длину самой длинной корректной цепочки. От этого зависит способ решения, а не размер файла.
  3. Не перебирайте все подстроки двойным циклом: в строке миллионы символов, и такой перебор не успеет. Нужен один проход, в котором хранится несколько величин — границы окна, счётчики, длины.
  4. Проверьте программу на коротком примере, ответ для которого вы знаете: несколько символов, где подходящая последовательность видна глазами. Если программа ошибается на нём, на файле задания она тоже ошибётся.
  5. В ответ впишите одно целое число без пробелов и единиц измерения — количество символов или найденное количество подстрок.

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

  • Один проход по строке. Строка просматривается слева направо один раз; для каждой позиции хранят небольшое число величин, а не всю историю. Двойной цикл по всем подстрокам на строке в миллионы символов не работает.
  • Скользящее окно. Правая граница идёт вперёд, левая сдвигается только тогда, когда окно перестало быть допустимым. Оба указателя двигаются в одну сторону, поэтому весь проход — ровно один просмотр строки.
  • Позиции букв. Если нужно считать подстроки с заданным числом вхождений символа, заранее выписывают позиции всех таких символов и работают с соседними позициями, а не с самой строкой.
  • Разбор строки средствами языка. В стандартной библиотеке Python есть готовые функции поиска подстроки (str.find), подсчёта вхождений (str.count), разбиения (str.split) и модуль re для шаблонов. Там, где задача сводится к ним, лучше использовать их: они написаны на C и работают заметно быстрее цикла.
  • Формат файла. У задания 24 файл — одна строка без заголовка и разделителей, поэтому построчное чтение здесь ничего не даёт.

Как оценивается

Проверка автоматическая, по ключу: ответ должен быть записан в форме из условия и полностью совпасть с эталоном. Код и черновики не проверяют — значение имеет только ответ. За верный ответ — 1 балл, частичного балла нет.

Критерии всех заданий экзамена — на странице критериев ЕГЭ.

Разбор задания демоверсии 2027

В демоверсии 2027 года файл demo_24.txt состоит из цифр 0, 6, 7, 8, 9 и знаков «–» и «*». Нужно максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами: два знака подряд не стоят, незначащих нулей нет, знака у числа 0 тоже нет.

Разберём маленький фрагмент в том же алфавите: 7-80*6-09*60. Слева направо: 7, знак «–», 80, знак «*», 6, знак «–» и 0 — это корректное выражение из восьми символов, где 0 стоит отдельным числом и знака не имеет. Следом идёт цифра 9: приписать её к нулю нельзя, получилось бы число 09 с незначащим нулём, поэтому цепочка обрывается. Новая цепочка начинается с 9, но 9*60 — это только четыре символа. Значит, для этого фрагмента ответ — 8.

На файле демоверсии тот же алгоритм, в котором набор знаков заменён на «–» и «*», печатает 154 — это ключ ФИПИ.

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

Перебор всех подстрок

Двойной цикл «для каждой левой границы — все правые» на строке в миллионы символов не успевает: число проверок растёт как квадрат длины строки. Нужен один проход, где хранится несколько величин, а не все подстроки.

Ведущий ноль в числе

В условии сказано, что незначащих нулей в записи чисел нет, поэтому «09» числом не считается. Если продлить цепочку на цифру после нуля, ответ получится завышенным.

Выражение начинается со знака операции

Знак ставится только после готового числа, а не в начале цепочки. Если увеличивать длину на каждом знаке без проверки, в ответ попадут цепочки, которые начинаются прямо со знака, например «*7» в самом начале строки. В коде поэтому длина цепочки со знаком на конце растёт, только если до знака уже стояло законченное число.

Граница окна остаётся на месте

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

«Ровно k» считают как «не более k»

Число подстрок ровно с двумя буквами — это разность числа подстрок не более чем с двумя и не более чем с одной. Если вычесть не то, ответ отличается в разы.

Нет проверки на коротком примере

На строке из десятка символов ответ видно глазами. Если программа расходится с ним, ошибка в чтении файла или в условии, и запускать её на миллионном файле рано.

Вопросы и ответы

Как решать задание 24 ЕГЭ по информатике?

Сначала по вопросу определить, что нужно: длина самой длинной подходящей подстроки, количество подходящих подстрок или длина самой длинной корректной цепочки. Затем написать один проход по строке: для длины — скользящее окно или разбор по состояниям, для количества — подсчёт по позициям букв. Готовое решение обязательно проверить на короткой строке.

Почему нельзя перебрать все подстроки?

Потому что строка занимает миллионы символов, а подстрок в ней — квадрат длины. Даже быстрый компьютер не успеет проверить их за отведённое время. Подходящий алгоритм просматривает строку один раз.

Можно ли решить задание 24 без программы?

Нет. Файл — одна строка примерно на десять миллионов символов, вручную её не разобрать. Программа обязательна; вручную проверяют только её работу на коротком фрагменте, где ответ виден глазами.

Сколько баллов даёт задание 24 и сколько на него времени?

1 балл, частичного балла нет. По обобщённому плану ФИПИ на задание отводится около 18 минут, уровень сложности — высокий.

Что было заданием 24 в 2026 году?

То же самое — обработка символьной информации. Номер и тема не менялись: смена тематики 2027 года коснулась только заданий 10, 13 и 23.

Почему задание 24 выполняют хуже остальных?

По данным методических рекомендаций ФИПИ по итогам 2026 года его выполняют в среднем 4,6 % участников — меньше, чем любое другое задание работы. Сложность не в объёме кода, а в аккуратном линейном решении и во внимательном чтении условия.

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

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

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