ЕГЭ №24: фрагменты от A до A с ровно 30 буквами C

Автор: wilgelmzwer , 24 мая 2026
← К списку задач
24052026_9_24
Условие задачи

Текстовый файл содержит строку из символов A, B, C и D.

Определите количество непрерывных фрагментов строки, которые начинаются на букву A, заканчиваются на букву A и содержат ровно 30 букв C.

В ответе запишите одно целое число.

Для выполнения задания используйте файл: 24_A_30_C_01.txt

Файлы к задаче

Проверка ответа

.
Подсказка

Удобно рассматривать позиции всех букв C. Если фрагмент содержит ровно 30 букв C, то его левая граница должна находиться после предыдущей C, а правая — перед следующей C.

Для каждого набора из 30 подряд идущих букв C нужно посчитать, сколько букв A может быть началом фрагмента и сколько букв A может быть концом фрагмента.

Решение

Найдём позиции всех букв C. Добавим фиктивные позиции -1 и len(s), чтобы удобно обрабатывать начало и конец строки.

Будем брать каждые 30 подряд идущих букв C. Для такого набора левая граница фрагмента может находиться после предыдущей C, а правая граница — перед следующей C.

Так как фрагмент должен начинаться и заканчиваться на A, нужно перемножить количество букв A в левой допустимой зоне и количество букв A в правой допустимой зоне.

s = open('24_A_30_C_01.txt').read().strip()

c = [-1]
for i, ch in enumerate(s):
    if ch == 'C':
        c.append(i)
c.append(len(s))

ans = 0
k = 30

for i in range(1, len(c) - k):
    left_zone_l = c[i - 1] + 1
    left_zone_r = c[i]

    right_zone_l = c[i + k - 1]
    right_zone_r = c[i + k] - 1

    left_a = s[left_zone_l:left_zone_r + 1].count('A')
    right_a = s[right_zone_l:right_zone_r + 1].count('A')

    ans += left_a * right_a

print(ans)

Ответ: 3047.

Входит в комплекты

Эта задача используется в подборках, связках или тренировочных наборах.

ЕГЭ
Задание 24
ЕГЭ №24
Строки
Подстроки
2 - простая
Авторская задача