Текстовый файл состоит из десятичных цифр, знаков «+» и «*» (сложения и умножения). Определите максимальное количество символов в непрерывной последовательности, являющейся корректным арифметическим выражением с целыми неотрицательными числами (без знака), значение которого равно нулю. В этом выражении никакие два знака арифметических операций не стоят рядом, порядок действий определяется по правилам математики. В записи чисел отсутствуют незначащие (ведущие) нули.
В ответе укажите количество символов.
Решение:
Решение на Python:
a = open('E:/downloads/ege/24_17641.txt').readline()
from re import *
s = r'(([1-9][0-9]*)|[0])([+*](([1-9][0-9]*)|[0]))*'
mx = 0
str = []
for i in finditer(s, a):
if eval(i[0]) == 0:
mx = max(mx, len(i[0]))
else:
str.append(i[0])
# Дополнительно проверяем подстроки длиннее найденного максимума.
str = [i for i in str if len(i) > mx]
for s in str:
for l in range(len(s)):
for r in range(len(s), 0, -1):
new_s = s[l:r]
try:
if eval(new_s) == 0:
mx = max(mx, len(new_s)-1)
except:
pass
if len(new_s) < mx:
break
if len(s[l:]) < mx:
break
print(mx)
Ответ: 142
Ответ:
142