Задание 24 ЕГЭ по информатике 2027: обработка строки из файла
- Раздел
- Алгоритмы и программирование
- Максимальный балл
- 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.
Задание выполняется с использованием прилагаемого файла
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 года.
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.
Задание выполняется с использованием прилагаемого файла
1. Окно допустимых символов расширяем вправо, следя, чтобы шаблон целиком в него не попал. 2. Как только шаблон заканчивается в текущем символе, левую границу окна переносим на один символ правее начала этого вхождения: раньше начинать нельзя, а такое окно шаблона уже не накрывает. 3. Граница двигается только вперёд, поэтому проход по строке один, а поиск вхождения делает готовая функция поиска подстроки.
На примере: в строке BCABCCAB шаблон «CAB» встречается дважды — в позициях 2–4 и 6–8 при нумерации с единицы. Самая длинная подстрока, которая шаблона не содержит, — ABCCA из пяти символов: она начинается сразу после начала первого вхождения и кончается символом перед вторым вхождением, ничего длиннее в примере нет.
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.
Задание выполняется с использованием прилагаемого файла
1. Выписываем позиции всех букв P и добавляем по краям две границы: -1 и длину строки. Позиции считаем от нуля. 2. Подстрока ровно с двумя буквами P должна начинаться между предыдущей буквой и первой буквой пары, а заканчиваться между второй буквой пары и следующей за ней буквой. 3. Число таких подстрок — произведение числа мест для левого конца на число мест для правого; складываем по всем парам соседних букв. Строка при этом просматривается один раз — на этапе выписывания позиций.
На примере: в строке PABPARP буквы P стоят в позициях 0, 3 и 6. Для пары 0 и 3 слева один вариант, справа три: 1 × 3 = 3. Для пары 3 и 6 — три слева и один справа: 3 × 1 = 3. Итого 6.
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
Самая длинная цепочка в строке из файла
Идёте по строке и держите длину текущей подходящей цепочки: символ подходит — длина растёт, нет — начинается заново. Сложные условия — то же окно с двумя указателями.
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
Как выполнять задание
- Сохраните приложенный файл в рабочую папку и откройте его одной строкой: s = open('24.txt').read().strip(). Файл состоит из одной строки, поэтому readline() и read() дают одно и то же, а strip() убирает перевод строки в конце, чтобы он не попал в подсчёт.
- Определите по вопросу, что именно считать: длину самой длинной подходящей подстроки, количество подходящих подстрок или длину самой длинной корректной цепочки. От этого зависит способ решения, а не размер файла.
- Не перебирайте все подстроки двойным циклом: в строке миллионы символов, и такой перебор не успеет. Нужен один проход, в котором хранится несколько величин — границы окна, счётчики, длины.
- Проверьте программу на коротком примере, ответ для которого вы знаете: несколько символов, где подходящая последовательность видна глазами. Если программа ошибается на нём, на файле задания она тоже ошибётся.
- В ответ впишите одно целое число без пробелов и единиц измерения — количество символов или найденное количество подстрок.
Что нужно знать
- Один проход по строке. Строка просматривается слева направо один раз; для каждой позиции хранят небольшое число величин, а не всю историю. Двойной цикл по всем подстрокам на строке в миллионы символов не работает.
- Скользящее окно. Правая граница идёт вперёд, левая сдвигается только тогда, когда окно перестало быть допустимым. Оба указателя двигаются в одну сторону, поэтому весь проход — ровно один просмотр строки.
- Позиции букв. Если нужно считать подстроки с заданным числом вхождений символа, заранее выписывают позиции всех таких символов и работают с соседними позициями, а не с самой строкой.
- Разбор строки средствами языка. В стандартной библиотеке 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 % участников — меньше, чем любое другое задание работы. Сложность не в объёме кода, а в аккуратном линейном решении и во внимательном чтении условия.
Другие задания раздела «Алгоритмы и программирование»
- Задание 5алгоритм над двоичной записью числа · до 1 балла
- Задание 6исполнитель Черепаха · до 1 балла
- Задание 12исполнитель Редактор и машина Тьюринга · до 1 балла
- Задание 13число программ исполнителя · до 1 балла
- Задание 16рекурсивные функции · до 1 балла
- Задание 17обработка последовательности из файла · до 1 балла
- Задание 25делители и маски чисел · до 1 балла
- Задание 26сортировка и жадный выбор · до 2 баллов
По демоверсии, спецификации и кодификатору ФИПИ 2027
Обновлено: