Как определить максимальную длину цепочки `XYZXYZXYZ`? [дубликат]
Текстовый файл состоит не более чем из 10^6 символов X , Y и Z . Определите максимальную длину цепочки XYZXYZXYZ. (составленной из фрагментов XYZ , последний фрагмент может быть не полным). (вместо текстового файла строка)
Можно ли как-то сократить код, решить иначе?
![]()
Т.к. не указаны ограничения на используемые технологии, память и быстродействие, то в новых Delphi можно, например, регулярные выражения применить.
![]()
Как правило хотят не сократить код, а ускорить вычисления. Для такой задачи отлично может подойти конечный автомат. Теория вычислений. Введение в конечные автоматы. В данном случае это сделать просто (даже таблицу переходов отдельно делать не нужно). И скорость будет максимальной (на каждом шаге у нас будет одно сравнение вместо трех). Хорошо реализованный RegEx тоже должен давать хорошую скорость.
PS. Если нужен код, то пиши.
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.9.7.43618
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Текстовый файл состоит не более чем из 10 6 символов арабских цифр
ВАРИАНТ 1
Текстовый файл состоит из символов арабских цифр (0, 1, 2, 3, . 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет символов 0, стоящих рядом.
Для выполнения этого задания следует написать программу.
ВАРИАНТ 2
Текстовый файл состоит из символов арабских цифр (0, 1, 2, 3, . 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет трех символов 0, стоящих рядом.
Для выполнения этого задания следует написать программу.
for i in range(2, len(s)):
if s[i-2] + s[i-1] + s[i]!=’000′:
k += 1
else:
m = max(k,m) #запоминаем максимальную длину подпоследовательности
k = 2 #как только встречаем третий 0, подпоследовательность считаем снова с предыдущего элемента, то есть к = 2
Ответ: 7684
ВАРИАНТ 3
Текстовый файл состоит из символов арабских цифр (0, 1, 2, 3, . 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет символов 1 и 2, стоящих рядом.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if not (p[i-1] + p[i] == ’12’ or p[i-1] + p[i] == ’21’):
k+=1
else:
m = max (k,m) #запоминаем максимальную длину подпоследовательности
k = 1
Ответ: 532
ВАРИАНТ 4
Текстовый файл состоит из символов арабских цифр (0, 1, 2, 3, . 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет символов 1 и 2, а также 1 и 3, стоящих рядом.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if not (p[i-1] + p[i] == ’12’ or p[i-1] + p[i] == ’21’ or p[i-1] + p[i] == ’13’ or p[i-1] + p[i] == ’31’):
k+=1
else:
m = max(k,m)
k = 1
Ответ: 339
ВАРИАНТ 5
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в алфавитном порядке (возможно с повторением символов).
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i]>= p[i-1]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 15
ВАРИАНТ 6
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в обратном алфавитном порядке (возможно с повторением символов).
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i]<= p[i-1]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 19
ВАРИАНТ 7
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z.
Для выполнения этого задания следует написать программу.
Ответ: 34
ВАРИАНТ 8
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z.
Для выполнения этого задания следует написать программу.
p=f.readline()
f.close()
m=n=0
a=» #подстрока а
for i in p:
a+=i
if i == ‘Z’:
n+=1
if n==2:
m=max(m,len(a)-1) # максимальное количество символов из текущего значения и длины а
a = a[a.find(‘Z’)+1:] # удаляем слева все символы, включая первую Z
n=1 # осталось символов Z в строке
Ответ: 43
ВАРИАНТ 9
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз.
Для выполнения этого задания следует написать программу.
Ответ: 50
ВАРИАНТ 10
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд одинаковых цифр.
Для выполнения этого задания следует написать программу.
Ответ: 47
ВАРИАНТ 11
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны .
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i-1]!= p[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 120
ВАРИАНТ 12
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд цифр, расположенных в строго возрастающем порядке.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i-1] < p[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 8
ВАРИАНТ 13
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд цифр, расположенных в строго убывающем порядке.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i-1] > p[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 7
ВАРИАНТ 14
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд цифр, расположенных в невозрастающем порядке.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i-1] >= p[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 47
ВАРИАНТ 15
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд цифр, расположенных в неубывающем порядке.
Для выполнения этого задания следует написать программу.
for i in range(1,len(p)):
if p[i-1] <= p[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 49
ВАРИАНТ 16
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд нечетных цифр.
Для выполнения этого задания следует написать программу.
for i in s:
if i in N:
k+=1
else:
m=max(k,m)
k=1
Ответ: 17
ВАРИАНТ 17
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд четных цифр.
Для выполнения этого задания следует написать программу.
for i in s:
if i in Ch:
k+=1
else:
m=max(k,m)
k=1
Ответ: 50
ВАРИАНТ 18
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, 2, . 9). Определите максимальное количество идущих подряд нечетных цифр, расположенных в неубывающем порядке.
Для выполнения этого задания следует написать программу.
for i in range(1,len(s)):
if s[i-1] in N and s[i] in N and s[i-1]<=s[i]:
k+=1
else:
m=max(k,m)
k=1
Ответ: 8
ВАРИАНТ 19
Текстовый файл состоит не более чем из 10 6 символов I, V и X. Сколько раз в файле встречается последовательность цифр, формирующая римскую цифру XV?
Для выполнения этого задания следует написать программу.
for i in range(1, len(s)):
if s[i-1] + s[i] ==’XV’:
k += 1
print(k)
Ответ: 111177
ВАРИАНТ 20
Текстовый файл состоит не более чем из 10 6 символов I, V и X. Сколько раз в файле встречается последовательность цифр, формирующая римскую цифру XVI?
ЕГЭ по информатике 2023 — Задание 24 (Полный разбор)

Сегодня посмотрим одно из самых интересных заданий из ЕГЭ по информатике 2023. Будем решать 24 задание. В этом задании нужно работать с файлами.
Все решения задач из задания 24 ЕГЭ по информатике 2023 будут приведены на языке программирования Python (Питон).
Текстовый файл состоит не более чем из 10 6 символов A, B и C. Определите максимальное количество идущих подряд символов B. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Решим данную задачу на языке Python.
С помощью команды open() подвязываемся к файлу. Чтобы не прописывать полный путь, файл должен лежать в той же папке, что и программа.
С помощью команды .read() зачитываем в переменную s всё содержимое файла.
Переменная k — это текущий счётчик символов «B». Задача переменной kmax сохранить максимальное значение k.
С помощью цикла for перебираем все символы из строки s. Переменная i пробегается по номерам всех симолов. Счёт символов начинается в строке с нуля. В начале берём нулевой символ, потом первый и т.д. Конструкция for i in range(0, len(s)) позволяет пройтись по всем символам строки до конца.
Если нам встретился нужный символ «B», то мы счётчик прибавляем на 1. Это значит, что мы подсчитываем текущую цепочку. Если будет стоять 3 символа «B» подряд, значит, счёт k покажет значение 3. Как только встретится дургой символ, то это означает, что цепочка прервалась и счётчик переводится в первоначальное положение 0.
При любом увеличении счётчика происходит анализ этого счётчика на максимальность. Функция max выбирает максимальное значение из старого значения kmax и нового показания счётчика k. Если счётчику k удалось победить kmax, то его значение будет считаться максимальным на данный момент времени.
В ответ идёт значение kmax. Это и есть длина максимальной цепочки. В этой задачке ответ получается 11.
Закрепим это простое задание из ЕГЭ по информатике 2023.
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z. Для выполнения этого задания следует написать программу.
Решение похоже на предыдущее.
Если нет символов «Z», то подсчитываем, иначе сбрасываем.
Задача (Обращаемся к соседу)
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в алфавитном порядке (возможно с повторением симолов). Для выполнения этого задания следует написать программу.
В ответе получается 15. Символы можно сравнивать между собой с помощью знаков «>» или меньше » =» или » (s)-1, иначе куда мы будем обращаться, когда дойдём до последнего символа?
В самом начале цепочки мы анализируем два символа, а к счётчику прибавляем всего лишь 1. Чтобы это учесть, в начале счётчику (переменной k) присваиваем 1. Затем, по мере продвижения по цепочке, мы добавляем в наш анализ 1 новый символ, и к счётчику добавляется одна 1. Дальше уже таких проблем нет.
Раз мы присвоили в переменную k единицу, то и сбрасывать в ветке else мы тоже должны на 1. Эти значения обычно взаимосвязаны.
Если мы обращаемся к соседнему символу, как правило, счётчик и сброс устанавливаются в 1. Это не стопроцентная истина, но иметь ввиду это нужно.
Задача (Обращаемся к соседу, закрепление)
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, . 9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны. Для выполнения этого задания следует написать программу.
Если соседи различны, мы подсчитываем, иначе сбрасываем.
Задача (Обращаемся к соседу, ещё сложнее)
Текстовый файл состоит не более чем из 10 6 символов арабских цифр (0, 1, . 9). Определите максимальное количество идущих подряд нечётных цифр, расположенных в неубывающем порядке. Для выполнения этого задания следует написать программу.
Здесь опять можно применить знаки сравнения прям к символам. Удобно проверить принадлежность к нечётным цифрам конструкцией s[i] in ‘13579’ . Нечётной цифрой должна быть как текущая, так и следующая.
Решим ещё одну тренировочную задачу из ЕГЭ по информатике 2023.
Задача (Обращаемся к соседу, ещё сложнее, закрепление)
Текстовый файл состоит не более чем из 10 6 символов 1, 2, 3, A, B, С. Определите максимальное количество идущих подряд символов, среди которых никакие две буквы и никакие две цифры не стоят рядом. Для выполнения этого задания следует написать программу.
В этой задаче цифры и буквы должны чередоваться. Если у нас цифра, то следующая должны быть буква, или наоборот, если у нас буква, то следующая должна быть цифра. В этих двух случаях прибавляем к счётчику 1.
Задача (Исключаем строку из 2-х символов, демо 2022)
Текстовый файл состоит из символов P, Q, R и S.
Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов P. Для выполнения этого задания следует написать программу.
Напишем решение на языке Python.
Подсчитываем символы, пока не встретилась комбинация двух P подряд. Как только встретилась данная комбинация, сбрасываем счётчик на 1. Здесь мы сбрасываем счётчик на значение 1, чтобы учесть один символ, которые находится в самой комбинации PP. И в начале мы тоже устанавливаем счётчик в значение 1 по этой же причине.

Мы проходим в цикле for до длины строки минус один. Значение 1 в счётчике при сбросе и в начале программы так же компенсирует и тот момент, что мы не подсчитываем последний символ!
При изменении счётчика, сохраняем максимальное значение в переменной mx
Если бы у нас была вместо PP другая комбинация, состоящая к примеру из 5 символов, то мы бы тогда в начале и при сбросе писали в счётчик значение 5-1=4.
Здесь тоже работает негласное правило, обращаемся к соседу, значит, счётчик устанавливаем в 1.
В этой задаче получается ответ 188.
Задача (Исключаем подстроку из 3-х символов)
Текстовый файл состоит из символов арабских цифр(0, 1, . 9).
Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет трёх символов 0, стоящих рядом. Для выполнения этого задания следует написать программу.
Напишем решение на языке Python.
Чтобы понять это решение, нужно посмотреть предыдущую задачу. Мы здесь обращаемся к двум соседям, значит, счётчик устанавливаем в 2. Так же проходим в цикле до len (s)-2. Нежелательная строка может состоять не только из одинаковых символов. Может быть строка «XYYZ», к примеру.
Ответ: 7684
Задача (Не более одного символа Z)
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более одного раза.
В нашей цепочке один раз можно встретиь символ Z, а два раза уже нельзя. Здесь мы применим функцию .split(). Как работает эта фнкция? Напишем тестовую программу.
Результат данной программы будет следующим:
Команда split «разрезает» строку по символу «q». В результате мы получаем массив с кусочками этой строки.
Решение нашей задачи.
Разрезаем нашу строку по символу «Z». Пробегаемся уже по массиву a. Цепочка-кандидат это текущий кусочек (a[i]), символ Z (1) и следующий кусочек (a[i+1]).
Каждого кандидата проверяем сразу на максимальность.
Задача (Не более двух символов Z)
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз.
Решение аналогично предыдущему.
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ. Цепочка должна начинаться с символа X и заканчиваться символом Z. Например, для строки ZZZXYZXYZXZZZ длина цепочки равна 6: XYZ+XYZ
Если мы подсчитаем количество идущих подряд звеньев XYZ, то, можно сказать, дело сделано.
Мы с помощью команды replace заменили звенья на «1» (на символ, которого точно нет в файле). Теперь задача свелась к самой простой, которую мы рассматривали в начале статьи. Нужно просто подсчитать количество идущих поряд единиц.
В ответе нас просили указать количество символов, а не звеньев, поэтому переменную kmax умножаем на 3.
Задача (Звенья, закрепление)
Текстовый файл состоит не более, чем из 10 6 символов из набора A, B, С. Найдите максимальное количество идущих пар символов AC или AB. Искомая подстрока может включать только пары AB, только пары AC или содержать одновременно как пары AC, так и пары AB.
Здесь нам подходит звено, как и AB, так и AC. В ответе нужно указать количество пар, поэтому не на что умножать переменную kmax не нужно.
Задача (Звенья, основная волна 20.06.22)
Текстовый файл состоит из символов A, B, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполенения этого задания следует написать программу.
Задача (Звенья, последнее звено неполное)
Текстовый файл состоит не более чем из 10 6 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ. (составленной из фрагментов XYZ, последний фрагмент может быть неполным). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Т.к. последнее звено может быть неполным, здесь удобно применить другой алгоритм.
Пусть в начале показания счётчика равно нулю. Если мы находим нужный нам символ в нужной последовательности, то прибавляем к счётчику 1. Если последовательность сбивается, то ставим счётчик в ноль.
На рисунке представлен данный алгоритм. В нижней строке указано показание счётчика в момент анализа символа.
На данном рисунке максимальная длина цепочки нужных символов равна 9.
Видим, что для символа X, когда он находится на своём месте, остаток от деления значения счётчика на 3 равен 0.
Для символа Y, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 1.
Для символа Z, когда данный символ находится на своём месте, остаток от деления значения счётчика на 3 равен 2.
Мы смотрим остаток от деления на 3, потому что у нас длина звена равна трём (XYZ).
Таким образом, мы и наш анализ очередного символа привяжем к показанию счётчика:
Важный момент: Если нужную цепочку прервал символ X, то нужно счётчик сразу выставить в 1, иначе может произойти такая ошибка:
Т.е. первые три нужных символа в цепочке алгоритм не засчитал.
Поэтому мы не просто сбрасываем счётчик в ноль, а прописываем условие:
Текстовый файл 24-157.txt состоит не более чем из 10 6 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CCBAABABCBC есть комбинации ABA, BAB, BCB и CBC. Чаще всего – 2 раза – между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B2 (без пробелов и других разделителей). Если таких символов несколько, выведите тот, который стоит раньше в алфавите.
Здесь мы заводим массив a. Индексы этого массива — это коды ANSI всех букв латинского алфавита (ABC…Z). Ведь, как мы знаем, каждая буква кодируется определённым числом (кодом ANSI). Вот часть этой таблицы.

Например, буква A кодируется кодом 65. Коды увеличиваются в алфавитном порядке на 1. Буква Z кодируется числом 90. Таким образом, 150 ячеек точно хватит для нашего алфавита. Здесь берём с запасом, потому что на экзамене можно точно не вспомнить коды, но достаточно запомнить, что 150 ячеек вполне хватит для заглавных и строчных букв латинского алфавита.
Значит, ячейка 65 отвечает за букву A, ячейка 66 отвечает за букву B и т.д. Если мы встретили букву между двумя одинаковыми буквами, то её ячейка увеличивается на 1.
Функция ord() превращает символ в код ANSI.
После того, как мы прошли всю строку и собрали информацию о наших буквах, нужно пройти массив a и найти наибольшее число в нём.
Здесь мы уже не пользуемся функцией max, а используем условие, потому что нужно кроме максимального числа тянуть ещё один параметр — сам код (переменную i). Функция chr() превращает код ANSI обратно в символ.
Ответ: W1608
Задача (Строки различной длины)
Текстовый файл 24-164.txt состоит не более чем из 10 6 символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке чаще всего. Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.
Пример. Исходный файл:
ZZQABA
ZALAAC
QRAQUT
В этом примере в первой и второй строках наибольшая длина цепочек одинаковых буквы равна 2 (ZZ в первой строке, AA во второй), в третьей – 1. Берём первую строку, т.к. она находится в файле раньше. В этой строке чаще других встречаются буквы Z и A (по 2 раза), выбираем букву A, т. к. она стоит раньше в алфавите. В ответе для этого примера надо записать A6, так как во всех строках файла буква A встречается 6 раз.
Для считывания построчно файла, будем использовать конструкцию, как в задании 17. В начале найдём строчку, содержащую самую длинную цепочку стоящих подряд одинаковых букв.
Получается строка под номером 162. Переменная count считает строки по порядку. В переменную n сохраняем номер нужной строки. Опять пользуемся условием, а не функцией max, т.к. здесь нужно и обновлять kmax, и сохранять значение n. У нас условие строгое k>kmax, значит, сохранится первая строка с наибольшей искомой цепочкой.
Теперь нас интересует только строка под номером 162. Далее используем приём из прошлой задачи. Заводим массив a из 150 ячеек и используем таблицу кодов ANSI. Так определяем какая буква встретилась чаще всего в строке под номером 162. Получается буква K.
Осталось найти количестов букв K во всём файле. Для этого используем функцию .count()
Ответ: K36582
Далее будут примерные задачи с основной волны ЕГЭ по информатике 2023.
Задача (ЕГЭ по информатике 2023, минимальная цепочка)
Текстовый файл состоит из символов A, B, C, D и E.
Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых символ A встречается 40 раз.
Для выполнения задания следует написать программу.
Рассмотрим пример. Пусть нужно подсчитать минимальное количество символов, где три буквы A.
Мы разрезали с помощью команды split строку по символу «A» и распечатали куски, которые получатся в результате этого. Программа распечатает:
На рисунке показаны цепочки-кандидаты:

Мы стараемся взять как можно меньше символов, но чтобы символов «A» было 3. Список a нумерует элементы начиная с 0. Поэтому первый кандидат будет состоять из 1-ого элемента и 2-ого. Второй кандидат будет состоять из 2-ого и 3-ого. А последний кандидат будет состоять из 3-ого и 4-ого.
Здесь нулевой элемент списка a и последний элемент не используются.
Напишем программу, которая будет перебирать цепочки-кандидаты так, как мы это обговорили выше, учитывая сами буквы «A».
Напишем код для нашей задачи.
При слишком большой входной строке программа может работать достаточно медленно из-за вложенных циклов. Исправим это:
Здесь в начале длина первой цепочки-кандидата формируется до основного цикла. В цикле же левый кусок вычитается, а правый кусок прибавляется, таким образом, получается следующая цепочка-кандидат.
Задача (ЕГЭ по информатике 2023, максимальная цепочка)
Текстовый файл состоит из символов A, B, C, D и E.
Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых символ A встречается не более 101 раз.
Для выполнения задания следует написать программу.
Рассмотрим пример из прошлой задачи. Пусть опять нужно найти максимальную цепочку, где не более трёх символов A.

Здесь получаются 3 цепочки кандидата. Мы хотим цепочки сделать как можно больше, но чтобы было символов A не более 3. В этой задаче и первый элемент списка a и последний элемент будут активно использоваться.
Напишем программу, которая распечатывает цепочки-кандиды.
В итоге получается решение:
Первый цикл отвечает за количество цепочек-кандидатов. Второй цикл составляет цепочку-кандидата.
На при длинной входной строке программа может работать достаточно медленно из-за вложенных циклов. Исправить это можно следующим способом:
Здесь в начале длина первой цепочки-кандидата формируется до основного цикла. В цикле же левый кусок вычитается, а правый кусок прибавляется, таким образом, получается следующая цепочка-кандидат.
ЕГЭ задание 24 с сайта К.Ю. Полякова
В презентации размещены решёные задачи на языке программирования PascalABS.NET в современном стиле.
Просмотр содержимого документа
«ЕГЭ задание 24 с сайта К.Ю. Полякова»

ЗАДАНИЕ 24 на ЕГЭ с сайта К.Ю. Полякова на современном PascalABC.Net

22) (А.М. Кабанов) В текстовом файле k7a-2.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите длину самой длинной подцепочки, состоящей из символов A, C, D (в произвольном порядке)

22) (А.М. Кабанов) В текстовом файле k7a-2.txt находится цепочка из символов латинского алфавита A, B, C, D, E, F. Найдите длину самой длинной подцепочки, состоящей из символов A, C, D (в произвольном порядке)
Предыдущая задача, но с использованием регулярных выражений

52) В текстовом файле k8-0.txt находится цепочка из символов, в которую могут входить заглавные буквы латинского алфавита A…Z и десятичные цифры. Найдите длину самой длинной подцепочки, состоящей из одинаковых символов. Если в файл несколько цепочек одинаковой длины, нужно взять первую из них. Выведите сначала символ, из которого cтроится эта подцепочка, а затем через пробел – длину этой подцепочки.

90) (П.Е. Финкель, г. Тимашевск) Текстовый файл 24-1.txt состоит не более чем из 106 символов. Определите минимальное чётное число, записанное в этом файле.

118) ( В.Н. Шубинкин, г. Казань ) Текстовый файл 24.txt содержит последовательность из строчных и заглавных букв английского алфавита и цифр, всего не более 106 символов. Запишите в ответе номер символа, с которого начинается наибольшая убывающая подпоследовательность. Нумерация символов начинается с 1. Если таких последовательностей несколько, и используйте первую из них.

146) ( Е. Джобс ) Текстовый файл 24-j8.txt состоит не более чем из 10 6 десятичных цифр. Найдите максимальную длину последовательности, каждые две соседние цифры в которой в сумме дают значение не меньшее 10. Например, в последовательности 1567543853 есть две такие последовательности: 5675 и 385. В качестве ответа укажите максимальную длину найденной последовательности.

166) Текстовый файл 24-164.txt состоит не более чем из 10 6 заглавных латинских букв (A..Z). Файл разбит на строки различной длины. В строках, содержащих менее 15 букв G, нужно определить и вывести максимальное расстояние между одинаковыми буквами в одной строке. Пример. Исходный файл: VOVA ZAGALG QRAGQT В этом примере во всех строках меньше 15 букв G. Самое большое расстояние между одинаковыми буквами – в третьей строке между буквами Q, расположенными в строке на 1-й и 5-й позициях. В ответе для данного примера нужно вывести число 4.
Решение классическим стилем

166) Текстовый файл 24-164.txt состоит не более чем из 10 6 заглавных латинских букв (A..Z). Файл разбит на строки различной длины. В строках, содержащих менее 15 букв G, нужно определить и вывести максимальное расстояние между одинаковыми буквами в одной строке. Пример. Исходный файл: VOVA ZAGALG QRAGQT В этом примере во всех строках меньше 15 букв G. Самое большое расстояние между одинаковыми буквами – в третьей строке между буквами Q, расположенными в строке на 1-й и 5-й позициях. В ответе для данного примера нужно вывести число 4.