Задание 24
Задание выполняется с использованием прилагаемого файла.
Текстовый файл состоит из цифр 0, 6, 7, 8, 9 и знаков арифметических операций «–» и «*» (вычитание и умножение). Определите максимальное количество символов в непрерывной последовательности, которая является корректным арифметическим выражением с целыми неотрицательными числами. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число 0 не имеет знака.
В ответе укажите количество символов.
Источник: ФИПИ, проект демоверсии ЕГЭ 2027, с. 21
Решение и ответ
Корректное выражение — «число знак число знак … число»: начинается и кончается цифрой, двух знаков подряд нет, каждое число — либо 0, либо не начинается с нуля.
Разбиваем строку на группы цифр и группы знаков. Группа из двух и более знаков рвёт выражение. Число с ведущим нулём тоже рвёт: старое выражение можно закончить на его первом «0», а новое начать с его хвоста без ведущих нулей.
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)Самое длинное выражение — 154 символа.
Ответ: 154