Текстовый файл состоит из цифр от 1 до 9, знаков операций «+», «–» и «*» (сложение, вычитание и умножение) и заглавных латинских букв A, B, C, D.
Назовём правильной суммой строку, содержащую последовательность из одного или более десятичных чисел, в которой между соседними числами стоит ровно один знак «+» или «-» и нет других знаков.
Примеры правильных сумм: «23», «115+6», «1980+12−123−51+3».
Назовём результатом правильной суммы число, которое получится при выполнении записанных в соответствующей строке сложений. Например, результат правильной суммы «2+3» — число 5, а результат правильной суммы «1+2−8+3» — число −2.
Найдите в данной строке расположенную непосредственно после буквы С правильную сумму с наибольшим результатом.
В ответе запишите результат найденной суммы. Гарантируется, что ответ не превышает 2 · 109.
Приведём решение Юрия Красильникова на языке Python.
import re
s = re.findall(r'C[1-9]+(?:[+\-][1-9]+)*', open('24.txt').readline())
ans = -10**20
for x in s:
stop = [i for i in range(len(x)) if x[i] in '+-']
stop += [len(x)]
m = max([eval(x[1:t]) for t in stop])
ans = max(ans,m)
print(ans)
Ответ: 221.
Приведём решение Юрия Красильникова на языке Python.
def calc(s):
t=0
i=0
while s[i] in '123456789':
t=t*10+int(s[i])
i+=1
ans=[t]
while True:
op=s[i]
if op not in '+-': return max(ans)
i+=1
if s[i] not in '123456789': return max(ans)
t=0
while s[i] in '123456789':
t=t*10+int(s[i])
i+=1
ans.append(ans[-1]+(t if op == '+' else -t))
a = open('24.txt').readline().split('C')[1:]
print(max([calc(x+'!') for x in a if len(x) > 0 and x[0] in '123456789']))

