Задание 24. Информатика. ЕГЭ. Статград. 04.03.2025
- Просмотры: 274
- Изменено: 7 марта 2025
Текстовый файл содержит строку, состоящую из цифр от \(1\) до \(9,\) знаков операций «\(+\)», «\(–\)» и «\(*\)» (сложение, вычитание и умножение) и заглавных латинских букв \(A, \, B, \, C, D.\) Назовём правильной суммой строку, содержащую последовательность из одного или более десятичных чисел, в которой перед первым числом нет знака, а между каждыми двумя соседними числами стоит ровно один знак «\(+\)» или «\(–\)» и нет других знаков. Примеры правильных сумм: «\(23\)», «\(115+6\)», «\(1980+12-123-51+3\)». Назовём результатом правильной суммы число, которое получится при выполнении записанных в соответствующей строке действий. Например, результат правильной суммы «\(2+3\)» — число \(5,\) а результат правильной суммы «\(1+2-8+3\)» — число \(-2.\) Найдите в данной строке расположенную непосредственно после буквы \(C\) правильную сумму с наибольшим результатом. В ответе запишите результат найденной суммы. Гарантируется, что ответ не превышает \(2 \cdot 10^9.\)
Решение:
Python
from re import findall
base = ''
s = open(base + '24.txt').readline().strip()
arr = findall(r'C[1-9]+(?:[+\-][1-9]+)*', s)
max_sum = -float('inf')
for expr in arr:
nums = [int(x) for x in expr[1:].replace('-', '+-').split('+')]
sum_tmp = [nums[0]]
for i in range(1, len(nums)):
sum_tmp.append(sum_tmp[-1] + nums[i])
max_sum = max(max_sum, max(sum_tmp))
print(max_sum)
Ответ: \(221\)