МУМ5 → Информатика → разборы → демоверсия 2027 → № 24

Задание 24 демоверсии ЕГЭ 2027 по информатике

Программа обработки символьной строки. Реши сам, потом открой решение.

Задание 24

Задание выполняется с использованием прилагаемого файла.

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

В ответе укажите количество символов.

Файл к заданию 24

Источник: ФИПИ, проект демоверсии ЕГЭ 2027, с. 21

Решение и ответ
  1. Корректное выражение — «число знак число знак … число»: начинается и кончается цифрой, двух знаков подряд нет, каждое число — либо 0, либо не начинается с нуля.

  2. Разбиваем строку на группы цифр и группы знаков. Группа из двух и более знаков рвёт выражение. Число с ведущим нулём тоже рвёт: старое выражение можно закончить на его первом «0», а новое начать с его хвоста без ведущих нулей.

  3. import re
    
    s = open('24.txt').read().strip()
    best = cur = 0       # cur — длина лучшего выражения, оканчивающегося на предыдущем числе
    for t in re.findall(r'[06789]+|[-*]+', s):
        if t[0] in '-*':
            if len(t) > 1:
                cur = 0                    # два знака подряд рвут выражение
            continue
        head = len(t.lstrip('0')) or 1     # новое выражение с хвоста этого числа
        if cur and (t == '0' or t[0] != '0'):
            cur += 1 + len(t)              # число целиком продолжает выражение
        else:
            if cur:
                best = max(best, cur + 2)  # можно закончить на «знак 0»
            cur = head
        best = max(best, cur)
    print(best)
    
  4. Самое длинное выражение — 154 символа.

Ответ: 154