Все статьи по ЕГЭ
6 сент. 2025 г. - 49 мин. чтения
ЕГЭ Задание 24

ЕГЭ Задание 24

Обработка символьных строк

@ashtana

Штана Альберт Игоревич

Типы заданий № 24

В этой статье будет разобрано задание 24.

Рассмотрим типовые задачи из двадцать четвёртого задания ЕГЭ по информатике.

Данное задание относится к высокому уровню сложности.

Время выполнения задания ≈ 18 минут.

Данное задание проверяет умение создавать собственные программы (10–20 строк) для обработки символьной информации.

Задача 1

Текстовый файл состоит не более чем из 10⁶ символов A, B и C. Определите максимальное количество идущих подряд символов B. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python

Надо всегда следить чтобы файл был закрыт при выходе из программы. Есть оператор 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

Задача 2

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых нет символа Z. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 3

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, расположенных в алфавитном порядке (возможно с повторением символов). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 4

Текстовый файл состоит не более чем из 10⁶ символов арабских цифр (0, 1, ..., 9). Определите максимальное количество идущих подряд цифр, среди которых каждые две соседние различны. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 5

Текстовый файл состоит не более чем из 10⁶ символов арабских цифр (0, 1, ..., 9). Определите максимальное количество идущих подряд нечётных цифр, расположенных в неубывающем порядке. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 6

Текстовый файл состоит не более чем из 10⁶ символов 1, 2, 3, A, B, С. Определите максимальное количество идущих подряд символов, среди которых никакие две буквы и никакие две цифры не стоят рядом. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 7 (Демоверсия ЕГЭ 2022)

Текстовый файл состоит из символов P, Q, R и S. Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет идущих подряд символов P. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 8

Текстовый файл состоит из символов арабских цифр(0, 1, ..., 9). Определите максимальное количество идущих подряд символов в прилагаемом файле, среди которых нет трёх символов 0, стоящих рядом. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 9

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более одного раза. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальное количество идущих подряд символов, среди которых символ Z встречается не более двух раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 11

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальную длину цепочки символов, состоящей из повторяющихся фрагментов XYZ. Цепочка должна начинаться с символа X и заканчиваться символом Z. Например, для строки ZZZXYZXYZXZZZ длина цепочки равна 6: XYZ+XYZ. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 12

Текстовый файл состоит не более, чем из 10⁶ символов из набора A, B, С. Найдите максимальное количество идущих пар символов AC или AB. Искомая подстрока может включать только пары AB, только пары AC или содержать одновременно как пары AC, так и пары AB. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 13

Текстовый файл состоит из символов A, B, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 14

Текстовый файл содержит строку из символов A, B и С, всего не более чем 1000000 символов. Найдите максимальную длину строки, состоящей только из комбинаций BAC и CAB. Например, в строке BABABACCABCABCB такая подстрока BACCABCAB (длина 9). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python

Чтобы проверить все варианты, запускаем программу с 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

Задача 15

Текстовый файл состоит не более чем из 10⁶ символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ... (составленной из фрагментов XYZ, последний фрагмент может быть неполным). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 16

Текстовый файл состоит не более чем из 10⁶ символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Определите символ, который чаще всего встречается в файле между двумя одинаковыми символами. Например, в тексте CCBAABABCBC есть комбинации ABA, BAB, BCB и CBC. Чаще всего – 2 раза – между двумя одинаковыми символами стоит B, в ответе для этого случая надо написать B2 (без пробелов и других разделителей). Если таких символов несколько, выведите тот, который стоит раньше в алфавите. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 17

Текстовый файл состоит не более чем из 10⁶ символов и содержит только заглавные буквы латинского алфавита (ABC…Z). Текст разбит на строки различной длины. Необходимо найти строку, содержащую самую длинную цепочку стоящих подряд одинаковых букв. Если таких строк несколько, надо взять ту, которая в файле встретилась раньше. Определите, какая буква встречается в этой строке чаще всего. Если таких букв несколько, надо взять ту, которая стоит раньше в алфавите. Запишите в ответе эту букву, а затем – сколько раз она встречается во всем файле.

Пример. Исходный файл:

ZZQABA ZALAAC QRAQUT

В этом примере в первой и второй строках наибольшая длина цепочек одинаковых буквы равна 2 (ZZ в первой строке, AA во второй), в третьей – 1. Берём первую строку, т.к. она находится в файле раньше. В этой строке чаще других встречаются буквы Z и A (по 2 раза), выбираем букву A, т. к. она стоит раньше в алфавите. В ответе для этого примера надо записать A6, так как во всех строках файла буква A встречается 6 раз.

Решение:
Решение Python
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

Задача 18

Текстовый файл состоит из символов A, B, C, D и E. Определите в прилагаемом файле минимальное количество идущих подряд символов, среди которых символ A встречается 40 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 19

Текстовый файл состоит из символов A, B, C, D и E. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых символ A встречается не более 101 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 20

Текстовый файл состоит из символов, обозначающих знаки « – », « * » и цифры 0, 7, 8, 9. Определите в прилагаемом файле максимальное количество идущих подряд символов, которые образуют математически правильную последовательность, в которую входят знаки « – » или « * » и натуральные числа без незначащих нулей. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 21

Текстовый файл состоит из десятичных цифр, знаков «+» и «*» (сложения и умножения). Определите максимальное количество символов в непрерывной последовательности, являющейся корректным арифметическим выражением с целыми неотрицательными числами (без знака), значение которого равно нулю. В этом выражении никакие два знака арифметических операций не стоят рядом, порядок действий определяется по правилам математики. В записи чисел отсутствуют незначащие (ведущие) нули. В ответе укажите количество символов. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
# Функция проверяет арифметическое выражение (в выражении может быть только *)
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

Задача 22

Текстовый файл состоит не более чем из 10⁶ символов и содержит только десятичные цифры и буквы латинского алфавита. Найдите минимальную длину подстроки, содержащей в порядке возрастания все шестнадцатеричные цифры. Строка может включать повторяющиеся цифры и другие символы. В ответе укажите найденную длину. Пример: Строка '0XY3Z9ABC1948FRG2333W4' содержит первые 5 символов (из 16 нужных). Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 23 (Демоверсия ЕГЭ 2023)

Текстовый файл состоит из символов A, F, C, D и O. Определите максимальное количество идущих подряд пар символов вида согласная + гласная в прилагаемом файле. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 24 (Демоверсия ЕГЭ 2024)

Текстовый файл состоит из символов T, U, V, W, X, Y и Z. Определите в прилагаемом файле максимальное количество идущих подряд символов (длину непрерывной подпоследовательности), среди которых символ T встречается ровно 100 раз. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 25 (Демоверсия ЕГЭ 2025)

Текстовый файл состоит из цифр 0, 6, 7, 8, 9 и знаков арифметических операций «–» и «*» (вычитание и умножение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе укажите количество символов. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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

Задача 26 (Демоверсия 2026)

Текстовый файл состоит из десятичных цифр и заглавных букв латинского алфавита. Определите в прилагаемом файле максимальное количество идущих подряд символов, среди которых подстрока 2025 встречается не менее 90 раз и при этом содержится ровно 80 букв Y. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе запишите число – количество символов в найденной последовательности. Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.

Решение:
Решение Python
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