Задание 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\)