№24 · решено
Выражение со значением 0
Текстовый файл. Файл из цифр и знаков «+», «*». Найди максимальное число символов в непрерывной последовательности — корректном выражении с целыми неотрицательными числами (без ведущих нулей, два знака подряд не стоят), значение которого равно нулю.
Источник: ФИПИ, № 31368
Скачать файл: task_31368_A.txt. В редакторе он уже лежит рядом с кодом, открывай как на экзамене: open('task_31368_A.txt').
Ответвпиши то, что вывела программа
Показать разбор
- Значение равно нулю, только если в каждом слагаемом есть множитель 0.
- Опиши число без ведущих нулей регуляркой: 0 или ненулевая цифра и дальше любые цифры.
- Опиши произведение, в котором есть множитель 0, и сумму таких произведений через «+».
- Пройди по файлу через finditer и возьми наибольшую длину совпадения.
from re import finditer
s = open('task_31368_A.txt').readline().strip()
num = r'(0|[1-9][0-9]*)'
pn = rf'(({num}\*)*0(\*{num})*)'
v = rf'{pn}(\+{pn})*'
print(max(len(x.group()) for x in finditer(v, s)))