
Обработка символьных строк
Штана Альберт Игоревич
В этой статье будет разобрано задание 24.
Рассмотрим типовые задачи из двадцать четвёртого задания ЕГЭ по информатике.
Данное задание относится к высокому уровню сложности.
Время выполнения задания ≈ 18 минут.
Данное задание проверяет умение создавать собственные программы (10–20 строк) для обработки символьной информации.
Текстовый файл состоит не более чем из 10⁶ символов A, B и C. Определите максимальное количество идущих подряд символов B. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Надо всегда следить чтобы файл был закрыт при выходе из программы.
Есть оператор with - полезный для работы с файлами. Он автоматически закроет файл.
Иначе можно столкнуться с ошибкой при повторном доступе к файлу, если ранее забыть закрыть его.
Функция rstrip() вернёт копию строки с удалёнными конечными пробелами справа. Если заданы символы, а не None, вместо этого удалит символы.
file_name = '24_1.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] == 'B':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax)
Ответ: 11
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_2.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] != 'Z':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax)
Ответ: 34
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в алфавитном порядке (возможно с повторением символов). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_3.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 1
kmax = 0
for i in range(0, len(s) - 1):
if s[i] <= s[i + 1]:
k += 1
kmax = max(k, kmax)
else:
k = 1
print(kmax)
Ответ: 15
Текстовый файл состоит не более чем из 10⁶ символов арабских цифр (0, 1, ..., 9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_4.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 1
kmax = 0
for i in range(0, len(s) - 1):
if s[i] != s[i + 1]:
k += 1
kmax = max(k, kmax)
else:
k = 1
print(kmax)
Ответ: 120
Текстовый файл состоит не более чем из 10⁶ символов арабских цифр (0, 1, ..., 9). Определите максимальное количество идущих подряд нечётных цифр, расположенных в неубывающем порядке. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_5.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read()
k = 1
kmax = 0
for i in range(0, len(s) - 1):
if s[i] <= s[i + 1] and s[i] in '13579' and s[i + 1] in '13579':
k += 1
kmax = max(k, kmax)
else:
k = 1
print(kmax)
Ответ: 8
Текстовый файл состоит не более чем из 10⁶ символов 1, 2, 3, A, B, С. Определите максимальное количество идущих подряд символов, среди которых никакие две буквы и никакие две цифры не стоят рядом. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_6.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read()
k = 1
kmax = 0
for i in range(0, len(s) - 1):
if (s[i] in '123' and s[i + 1] in 'ABC') or (s[i] in 'ABC' and s[i + 1] in '123'):
k += 1
kmax = max(k, kmax)
else:
k = 1
print(kmax)
Ответ: 20
Текстовый файл состоит из символов P, Q, R и S. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов P. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_7.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 1
kmax = 0
for i in range(0, len(s) - 1):
if s[i] == 'P' and s[i + 1] == 'P':
k = 1
else:
k += 1
kmax = max(k, kmax)
print(kmax)
Ответ: 188
Текстовый файл состоит из символов арабских цифр(0, 1, ..., 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет трёх символов 0, стоящих рядом. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_8.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 2
kmax = 0
for i in range(0, len(s) - 2):
if s[i] == '0' and s[i + 1] == '0' and s[i + 2] == '0':
k = 2
else:
k += 1
kmax = max(k, kmax)
print(kmax)
Ответ: 7684
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более одного раза. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_9.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
a = s.split('Z')
k = 0
kmax = 0
for i in range(0, len(a) - 1):
k = len(a[i]) + 1 + len(a[i + 1])
kmax = max(k, kmax)
print(kmax)
Ответ: 43
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_10.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
a = s.split('Z')
k = 0
kmax = 0
for i in range(0, len(a) - 2):
k = len(a[i]) + 1 + len(a[i + 1]) + 1 + len(a[i + 2])
kmax = max(k, kmax)
print(kmax)
Ответ: 50
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ. Цепочка должна начинаться с символа X и заканчиваться символом Z. Например, для строки ZZZXYZXYZXZZZ длина цепочки равна 6: XYZ+XYZ. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_11.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
s = s.replace('XYZ', '1')
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] == '1':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax * 3)
Ответ: 66
Текстовый файл состоит не более, чем из 10⁶ символов из набора A, B, С. Найдите максимальное количество идущих пар символов AC или AB. Искомая подстрока может включать только пары AB, только пары AC или содержать одновременно как пары AC, так и пары AB. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_12.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
s = s.replace('AB', '1')
s = s.replace('AC', '1')
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] == '1':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax)
Ответ: 19
Текстовый файл состоит из символов A, B, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_13.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
s = s.replace('BA', '1')
s = s.replace('CA', '1')
s = s.replace('DA', '1')
s = s.replace('BO', '1')
s = s.replace('CO', '1')
s = s.replace('DO', '1')
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] == '1':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax)
Ответ: 174
Текстовый файл содержит строку из символов A, B и С, всего не более чем 1000000 символов. Найдите максимальную длину строки, состоящей только из комбинаций BAC и CAB. Например, в строке BABABACCABCABCB такая подстрока BACCABCAB (длина 9). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Чтобы проверить все варианты, запускаем программу с 0-ого символа:
for i in range(0, len(s), 3):
В ответ пойдёт решение, где ответ наибольший.
file_name = '24_14.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 0
kmax = 0
a = ['BAC', 'CAB']
for i in range(2, len(s), 3):
if s[i:i + 3] in a:
k += 3
kmax = max(kmax, k)
else:
k = 0
print(kmax)
Ответ: 72
Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ... (составленной из фрагментов XYZ, последний фрагмент может быть неполным). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_15.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
k = 0
kmax = 0
for i in range(0, len(s)):
if (s[i] == 'X' and k % 3 == 0) or (s[i] == 'Y' and k % 3 == 1) or (s[i] == 'Z' and k % 3 == 2):
k += 1
kmax = max(k, kmax)
else:
if s[i] == 'X':
k = 1
else:
k = 0
print(kmax)
Ответ: 13
Текстовый файл состоит не более чем из 10⁶ символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CCBAABABCBC есть комбинации ABA, BAB, BCB и CBC. Чаще всего – 2 раза – между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B2 (без пробелов и других разделителей). Если таких символов несколько, выведите тот, который стоит раньше в алфавите. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_16.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
a = [0] * 150
for i in range(0, len(s) - 2):
if s[i] == s[i + 2]:
a[ord(s[i + 1])] = a[ord(s[i + 1])] + 1
ch = ''
mx = 0
for i in range(0, 150):
if a[i] > mx:
mx = a[i]
ch = chr(i)
print(ch, mx)
Ответ: W 1608
Текстовый файл состоит не более чем из 10⁶ символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке чаще всего. Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.
Пример. Исходный файл:
ZZQABA ZALAAC QRAQUT
В этом примере в первой и второй строках наибольшая длина цепочек одинаковых буквы равна 2 (ZZ в первой строке, AA во второй), в третьей – 1. Берём первую строку, т.к. она находится в файле раньше. В этой строке чаще других встречаются буквы Z и A (по 2 раза), выбираем букву A, т. к. она стоит раньше в алфавите. В ответе для этого примера надо записать A6, так как во всех строках файла буква A встречается 6 раз.
file_name = '24_17.txt'
with open(file_name, mode='r', encoding='utf8') as f:
kmax = 0
count = 0
n = -1
data = [s for s in f.readlines()]
for s in data:
count += 1
k = 1
for i in range(0, len(s) - 1):
if s[i] == s[i + 1]:
k += 1
if k > kmax:
kmax = k
n = count
else:
k = 1
count = 0
a = [0] * 150
for s in data:
count += 1
k = 1
if count == n:
for i in range(0, len(s)):
a[ord(s[i])] = a[ord(s[i])] + 1
ch = ''
mx = 0
for i in range(0, 150):
if a[i] > mx:
mx = a[i]
ch = chr(i)
s_data = ''.join(data)
print(ch, s_data.count(ch))
Ответ: К 36582
Текстовый файл состоит из символов A, B, C, D и E. Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых символ A встречается 40 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_18.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
t = 40
a = s.split('A')
k = 0
kmin = 10 ** 10
for i in range(1, t):
k += 1
k+= len(a[i])
k += 1
for i in range(t, len(a) - 1):
kmin = min(kmin, k)
k -= 1
k -= len(a[i - t + 1])
k += len(a[i])
k += 1
kmin = min(kmin, k)
print(kmin)
Ответ: 81
Текстовый файл состоит из символов A, B, C, D и E. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых символ A встречается не более 101 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_19.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().rstrip()
t = 101
a = s.split('A')
k = 0
kmax = 0
for j in range(0, t + 1):
k += len(a[j])
if j != t:
k += 1
for i in range(t + 1, len(a)):
kmax = max(kmax, k)
k -= len(a[i - t - 1])
k -= 1
k += 1
k += len(a[i])
kmax = max(kmax, k)
print(kmax)
Ответ: 584
Текстовый файл состоит из символов, обозначающих знаки « – », « * » и цифры 0, 7, 8, 9. Определите в прилагаемом файле максимальное количество идущих подряд символов, которые образуют математически правильную последовательность, в которую входят знаки « – » или « * » и натуральные числа без незначащих нулей. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_20.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().strip()
s = s.replace('-', '*')
a = s.split('*')
st = ''
kmax = 0
for i in range(len(a)):
if a[i] != '' and a[i][0] != '0':
if st != '':
st = st + '*' + a[i]
else:
st = st + a[i]
if st.find('*') != -1:
kmax = max(kmax, len(st))
else:
if a[i] != '' and a[i][0] == '0':
a[i] = a[i].lstrip('0')
st = a[i]
else:
st = ''
print(kmax)
Ответ: 40
Текстовый файл состоит из десятичных цифр, знаков «+» и «*» (сложения и умножения). Определите максимальное количество символов в непрерывной последовательности, являющейся корректным арифметическим выражением с целыми неотрицательными числами (без знака), значение которого равно нулю. В этом выражении никакие два знака арифметических операций не стоят рядом, порядок действий определяется по правилам математики. В записи чисел отсутствуют незначащие (ведущие) нули. В ответе укажите количество символов. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
# Функция проверяет арифметическое выражение (в выражении может быть только *)
def f1(s):
if s != '' and ((s.find('*') != -1 and (s.find('*0*') != -1 or s[:2] == '0*' or s[-2:] == '*0')) or (s == '0')):
return True
return False
file_name = '24_21.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().strip()
s = s.replace('+*', '$').replace('**', '$').replace('++', '$').replace('*+', '$')
kmax = 0
a = s.split('$')
for i in range(len(a)):
b = a[i].strip('*+').split('+')
st = ''
for j in range(len(b)):
if f1(b[j]):
if st != '':
st += '+' + b[j]
else:
st += b[j]
kmax = max(kmax, len(st))
else:
st = ''
for k in range(1, len(b[j]) + 1):
if f1(b[j][-k:]):
st = b[j][-k:]
kmax = max(kmax, len(st))
print(kmax)
Ответ: 142
Текстовый файл состоит не более чем из 10⁶ символов и содержит только десятичные цифры и буквы латинского алфавита. Найдите минимальную длину подстроки, содержащей в порядке возрастания все шестнадцатеричные цифры. Строка может включать повторяющиеся цифры и другие символы. В ответе укажите найденную длину. Пример: Строка '0XY3Z9ABC1948FRG2333W4' содержит первые 5 символов (из 16 нужных). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_22.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().strip()
k = 0
kmin = 10**10
n = 0
for i in range(0, len(s)):
if s[i] in '0123456789ABCDEF':
x = int(s[i], 16)
if x == 0:
n += 1
k += 1
for j in range(i+1, len(s)):
k += 1
if s[j] in '0123456789ABCDEF':
y = int(s[j], 16)
if n == y:
n += 1
if n == 16:
n = 0
kmin = min(k, kmin)
k = 0
break
print(kmin)
Ответ: 153
Текстовый файл состоит из символов A, F, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
file_name = '24_2023.txt'
with open(file_name, mode='r', encoding='utf8') as f:
s = f.read().strip()
s = s.replace('FA', '1')
s = s.replace('CA', '1')
s = s.replace('DA', '1')
s = s.replace('FO', '1')
s = s.replace('CO', '1')
s = s.replace('DO', '1')
k = 0
kmax = 0
for i in range(0, len(s)):
if s[i] == '1':
k += 1
kmax = max(k, kmax)
else:
k = 0
print(kmax)
Ответ: 95
Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ T встречается ровно 100 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
with open('24_2024.txt', mode='r') as file: # Открываем файл на чтение сохраняя ссылку в переменную с именем file
text = file.read() # Прочитаем весь текст в файле в переменную типа str
t = 100 # Переменная для подсчёта по условию задачи
split_text = text.split('T') # Разбиваем текст на список через символы T
# Получается списк из пустых строк и оставшихся символов, кроме T(пустые строки)
count = 0 # переменная для подсчёта символов T
count_max = 0 # переменная для сохранения длины непрерывной последовательности
for j in range(0, t + 1): # Запускаем первый цикл для первых 100 элементов последовательности
count += len(split_text[j]) # Если пустая строка(символ T) - длина len = 0, то count не увеличивается
if j != t: # Если переменная цикла не равна 100, значит к count прибавляем 1
count += 1
for i in range(t + 1, len(split_text)): # Перебираем всю оставшуюся последовательность элементов(символов)
count -= len(split_text[i - t - 1]) # уменьшаем count на 1 если символ
# в начале последовательности(из 100 элементов) отличается от T
count += len(split_text[i]) # увеличиваем count на 1 если символ в конце последовательности отличается от T
count_max = max(count_max, count) # Сохраняем максимальное количество идущих подряд символов
print(count_max) # Выводим на экран длину непрерывной подпоследовательности
# Второе решение с сайта РЕШУ ЕГЭ
f = open('24_2024.txt')
s = f.readline()
ll = 0
maxi = 0
pos = [] # Создаём список для хранения позиций символов Т
for i in range(len(s)): # Перебираем всю исходную строку, чтобы доступ к символу получать по индексу
if s[i] == 'T': # Если символ Т в исходной строке
pos.append(i) # Добавить индекс(позицию) этого символа Т в список
for i in range(101, len(pos)): # Начинаем с 101 потому что по условию задачи символ Т должен встречаться ровно 100 раз
# Здесь вначале по индексу 101 выбираем позицию(индекс) символа Т(когда он 101 раз попался в последовательности)
# и вычитаем позицию(индекс) когда(по какой позиции) он мог попасться 100 элементов назад
# минус 1 потому что позиции получили между 101 Т(по условию 100)
# Получим количество идущих подряд символов, среди которых 100 раз встречается Т
ll = pos[i] - pos[i - 101] - 1
maxi = max(maxi, ll) # сохраняем максимум, перебирая все возможные варианты последовательностей
print(maxi) # Вывод ответа в конце перебора
Ответ: 133
Текстовый файл состоит из цифр 0, 6, 7, 8, 9 и знаков арифметических операций «–» и «*» (вычитание и умножение).
Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами.
В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе укажите количество символов.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
with open('24_2025.txt', mode='r') as file: # Открываем файл на чтение сохраняя ссылку в переменную с именем file
text = file.read() # Прочитаем весь текст в файле в переменную типа str
text = text.replace('-', '*') # Заменим "-" на "*"
s = text.split('*') # Разбиваем текст на список через символы *
# Получается списк из пустых строк и оставшихся символов(цифры), кроме *(пустые строки)
str1 = '' # переменная для формирования цепочки символов
count_max = 0 # переменная для сохранения длины непрерывной последовательности
for i in range(len(s)): # Запускаем цикл по списку элементов с доступом по индексу
if s[i] == '' or (s[i][0] == '0' and s[i] != '0'): # Если пустая строка или начинается с нуля
if s[i] != '' and s[i][0] == '0': # Ещё раз проверяем если не пустая и начинается с нуля
if s[i].count('0') != len(s[i]): # Если количество нулей не совпадает с длинной строки
s[i] = s[i].lstrip('0') # Удаляем лишние нули в начале строки
else:
s[i] = '0' # Просто делаем из множества 0 один
str1 = s[i]
else: # Делаем строку из которой формируется цепочка символов пустой
str1 = ''
else: # Иначе если элемент не пустой(т.е. не арифметическая операция) и не ноль. Формируем цепочку.
if str1 != '':
str1 += '*' + s[i]
else:
str1 += s[i]
if str1.find('*') != -1: # Если выше строка не стала пустой и уже содержит операцию - сохраняем максимум
count_max = max(count_max, len(str1))
print(count_max) # Выводим на экран максимальную длину непрерывной подпоследовательности
Ответ: 154
Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита.
Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых подстрока 2025 встречается не менее 90 раз и при этом содержится ровно 80 букв Y.
В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе запишите число – количество символов в найденной последовательности.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
with open('24_2026.txt', mode='r') as file: # Открываем файл на чтение сохраняя ссылку в переменную с именем file
text = file.read() # Прочитаем весь текст в файле в переменную типа str
y = 80 # Переменная для подсчёта по условию задачи
split_text = text.split('Y') # Разбиваем текст на список через символы Y
# Получается список из пустых строк и оставшихся символов, кроме Y(пустые строки)
count = 0 # переменная для подсчёта символов Y
count_2025 = 0 # переменная для подсчёта подряд идущих символов 2025
count_max = 0 # переменная для сохранения длины непрерывной последовательности
for j in range(0, y + 1): # Запускаем первый цикл для первых 80 элементов последовательности
count += len(split_text[j]) # Если пустая строка(символ Y) - длина len = 0, то count не увеличивается
if j != y: # Если переменная цикла не равна 80, значит к count прибавляем 1
count += 1
for i in range(y + 1, len(split_text)): # Перебираем всю оставшуюся последовательность элементов(символов)
count -= len(split_text[i - y - 1]) # уменьшаем count на 1 если символ
# в начале последовательности(из 80 элементов) отличается от Y
count += len(split_text[i]) # увеличиваем count на 1 если символ в конце последовательности отличается от Y
if count > count_max:
count_2025 = "".join(split_text[i - y - 1:i]).count('2025') # Получаем сколько раз подряд в последовательности встретились символы "2025"
if count_2025 >= 90: # Проверяем по условию задачи последовательность "2025" должна повторяться не менее 90 раз
count_max = max(count_max, count) # Сохраняем максимальное количество идущих подряд символов
print(count_max) # Выводим на экран длину непрерывной подпоследовательности
# Вариант с сайта РЕШУ ЕГЭ
s = 'Y' + open('24_2026.txt').readline() + 'Y'
maxi = 0
n_y = [x for x in range(len(s)) if s[x] == 'Y']
for i in range(len(n_y) - 81):
if s[n_y[i + 1]: n_y[i+81]].count('2025') >= 90:
maxi = max(maxi, n_y[i + 81] - n_y[i] - 1)
print(maxi)
Ответ: 2981