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

ЕГЭ по информатике Основная волна 07.06.2024 kompege.ru – задание №24
Решение:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
f = open('ege-inf-real-07062024-1day-q24.txt').read() k = 0 m = 0 a = [] for i in range(len(f) - 1): if f[i] == 'C' and f[i + 1] == 'D': a.append(i) for i in range(len(a) - 161): d = a[i + 161] - a[i] - 1 if d > m: m = d print(m+1) #+1, потому что мы добавляем еще одну букву от CD (в конце) |
ИЛИ
Решение на Python — Алексей Кабанов
два указателя
|
1 2 3 4 5 6 7 8 9 10 11 |
f = open('24_17535.txt').readline() l = m = 0 kcd = 0 for r in range(1, len(f)): if f[r-1]+f[r]=='CD': kcd += 1 while kcd > 160: if f[l]+f[l+1]=='CD': kcd -= 1 l += 1 if kcd == 160: m = max(m, r-l+1) print(m) |
Объяснение кода:
- Чтение строки из файла:
Python1f = open('24_17535.txt').readline()
Открываем файл'24_17535.txt'и читаем первую строку в переменнуюf. - Инициализация переменных:
Python12l = m = 0kcd = 0
Инициализируем переменныеl(левая граница текущего окна),m(максимальная длина подстроки) иkcd(количество встреч пар ‘CD’). - Проход по строке:
Python123for r in range(1, len(f)):if f[r-1] + f[r] == 'CD':kcd += 1
Проходим по строкеfс индексомrот 1 до длины строки. Если пара символовf[r-1] + f[r]равна ‘CD’, увеличиваемkcdна 1. - Сдвиг левой границы окна:
Python1234while kcd > 160:if f[l] + f[l+1] == 'CD':kcd -= 1l += 1
Пока количество пар ‘CD’ больше 160, сдвигаем левую границу окнаlвправо. Если параf[l] + f[l+1]равна ‘CD’, уменьшаемkcdна 1. - Обновление максимальной длины подстроки:
Python12if kcd == 160:m = max(m, r - l + 1)
Если количество пар ‘CD’ равно 160, обновляем максимальную длину подстрокиm. - Вывод результата:
Python1print(m)
Выводим максимальную длину подстроки, среди которых пара символов CD встречается ровно 160 раз.
Итог:
Этот код решает задачу нахождения максимального количества идущих подряд символов в строке файла, среди которых пара символов CD встречается ровно 160 раз. Используется скользящее окно для поддержания количества пар CD и обновления максимальной длины подстроки.
ИЛИ
сплитом
|
1 2 3 4 5 6 |
f = f.replace('CD', 'C D').split() m = 0 for i in range(len(f)-161): a=''.join(f[i:i+161]) m = max(m, len(a)) print(m) |
Объяснение кода:
- Чтение строки из файла:
Python1f = open('24_17535.txt').readline()
Открываем файл'24_17535.txt'и читаем первую строку в переменнуюf. - Замена и разделение строки:
Python1f = f.replace('CD', 'C D').split()
Заменяем все вхождения ‘CD’ на ‘C D’, чтобы разделить их пробелами, а затем используем методsplitдля создания списка подстрок, разделенных пробелами. - Поиск максимальной длины подстроки:
Python1234m = 0for i in range(len(f)-161):a = ''.join(f[i:i+161])m = max(m, len(a))
Проходим по спискуfс помощью циклаfor. На каждой итерации объединяем 161 элемент из спискаfв строкуaи обновляем значениеmмаксимальной длиной строкиa. - Вывод результата:
Python1print(m)
Выводим максимальную длину подстроки, среди которых пара символов CD встречается ровно 160 раз.
Итог:
Этот код решает задачу нахождения максимального количества идущих подряд символов в строке файла, среди которых пара символов CD встречается ровно 160 раз. Используется метод replace для замены всех вхождений ‘CD’ на ‘C D’ и метод split для создания списка подстрок, которые затем объединяются в строки для нахождения максимальной длины.
Ответ: 9712