Задача #4257

Работа со строками

Уровень ЕГЭ

Текстовый файл состоит из заглавных букв латинского алфавита А, В, С, D, Е и F. Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых тройка букв АВС (в указанном порядке) встречается ровно 110 раз, при этом искомая последовательность заканчивается буквой С. В ответе запишите число - количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу.

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

Ответ
Новая
Войдите, чтобы история ответов и статистика сохранялись.
Решение Нажми, чтобы открыть Нажми, чтобы скрыть

Ответ

467

Видео по задаче

I способ (накопление строки)
s = open('24.txt').readline()

c = ''
k = 0
m = 1000000

for r in range(len(s)):
c+=s[r]
if c[-3:]=='ABC':k+=1
if c[-1]=='C':
while k>=110:
if k==110: m=min(m,len(c))
if c[:3]=='ABC':k-=1
c = c[1:]
if r%100_000==0: print(r,len(s),m)
print(m)

II способ (двойной цикл)
s = open('24.txt').readline()
s = s[::-1]

m = 10000
for l in range(len(s)):
if s[l]=='C':
for r in range(l+m, l, -1):
c = s[l:r]
if c.count('CBA')<110: break
if c.count('CBA')==110: m=min(m,len(c))
print(m)
Быстрый переход
Перейти к задаче