*Текстовый файл состоит не более чем из \(10^6\) символов и содержит только цифры шестнадцатеричной системы счисления, а также знаки «\(+\)» и «\(*\)» (сложения и умножения). Найдите самую длинную непрерывную последовательность символов, которая стоит сразу после буквы \(F\) и является корректным арифметическим выражением с целыми неотрицательными числами, записанными в восьмеричной системе счисления. В этом выражении никакие два знака арифметических операций не стоят рядом, в записи чисел отсутствуют незначащие (ведущие) нули и число \(0\) не имеет знака. В ответе запишите значение этого выражения. Если в файле есть два подходящих выражения одинаковой длины, выберите то, у которого значение наибольшее.
Решение:
Python
from re import finditer
s = open('7975.txt').readline().strip()
hn = r'(0|[1-7][0-7]*)'
arr = [g.group(1) for g in finditer(rf'(?=F({hn}([+*]{hn})+))', s)]
m = max(len(a) for a in arr)
arr = [a for a in arr if len(a) == m]
mv = 0
for expr in arr:
sign = [-1] + [p for p in range(len(expr)) if expr[p] in '+*'] + [len(expr)]
nums = [int(expr[x+1:y], 8) for x, y in zip(sign, sign[1:])]
ne = str(nums[0]) + ''.join([f'{expr[sign[i]]}{nums[i]}' for i in range(1, len(nums))])
mv = max(mv, eval(ne))
print(mv)
Ответ: \(142844\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене