Текстовый файл состоит из заглавных букв латинского алфавита A, B, C, D, E и F. Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых тройка букв ABC (в указанном порядке) встречается ровно 110 раз, при этом искомая последовательность заканчивается буквой C. В ответе запишите число — количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу.
Ответ:

Резервная волна ЕГЭ по информатике 22.06.2026 – задание №24
Решение:
Код программы
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
f = open('24.txt') s = f.readline().strip() pos = [] for i in range(len(s) - 2): if s[i:i+3] == 'ABC': pos.append(i) mn = 10**10 for i in range(len(pos) - 109): start = pos[i] end = pos[i + 109] + 2 mn = min(mn, end - start + 1) print(mn) |
Объяснение решения
Нужно найти минимальную по длине последовательность символов, в которой сочетание ABC встречается ровно 110 раз, причём последовательность должна заканчиваться буквой C.
Сначала считываем строку из файла:
|
1 2 3 |
f = open('24.txt') s = f.readline().strip() |
Затем найдём позиции всех вхождений подстроки ABC.
|
1 2 3 4 5 6 |
pos = [] for i in range(len(s) - 2): if s[i:i+3] == 'ABC': pos.append(i) |
В список pos записываются индексы букв A, с которых начинается каждое сочетание ABC.
Например, если:
|
1 2 |
pos = [15, 21, 30, ...] |
то это означает, что первое найденное ABC начинается с позиции 15, второе — с позиции 21 и т. д.
Теперь рассматриваем каждые 110 последовательных вхождений ABC:
|
1 2 |
for i in range(len(pos) - 109): |
Первое из этих 110 вхождений начинается с позиции:
|
1 2 |
start = pos[i] |
Искомый фрагмент выгодно начинать именно с буквы A первого сочетания ABC. Если начать раньше, длина последовательности только увеличится.
110-е сочетание ABC начинается с позиции:
|
1 2 |
pos[i + 109] |
Но по условию последовательность должна заканчиваться буквой C. В сочетании ABC буква C находится через две позиции после A, поэтому:
|
1 2 |
end = pos[i + 109] + 2 |
Длина полученного фрагмента вычисляется по формуле:
|
1 2 |
end - start + 1 |
Среди всех возможных групп из 110 вхождений сохраняем минимальную длину:
|
1 2 |
mn = min(mn, end - start + 1) |
После проверки всех вариантов выводим ответ:
|
1 2 |
print(mn) |
Ответ: 467