Задание 24. Информатика. ЕГЭ. Шастин. 9.2.2025

Просмотры: 280
Изменено: 12 февраля 2025

(Л. Шастин) Текстовый файл состоит из цифр \(0, \, 6, \, 7, \, 8, \, 9\) и знаков арифметических операций «\(-\)» и «\(*\)» (вычитание и умножение). Определите количество непрерывных подпоследовательностей в этом файле, которые являются корректными арифметическими выражениями с целыми неотрицательными числами. В таких выражениях никакие два знака арифметических операций не должны стоять рядом, а в записи чисел должны отсутствовать незначащие (ведущие) нули. В ответе укажите количество подходящих подпоследовательностей.

Например, в строке *567-8**09-30- есть следующие корректные арифметические выражения: 567-8, 67-8, 7-8, 9-3 и 9-30. Ответ: 5.

Примечание. Отдельно стоящие числа арифметическими выражениями не считать. Число \(0\) не имеет знака.

Файл с данными

Решение:

Python


from re import findall

base = ''
s = open(base + '24.txt').readline()
arith_expr = findall(r'(?:0|[6-9][06-9]*)(?:[-*](?:0|[6-9][06-9]*))+', s)
q = 0
for expr in arith_expr:
    work_expr = expr.replace('*', '-').split('-')
    for j in range(len(work_expr) - 1):
        if len(work_expr[j]) > 1:
            mul = len(work_expr[j].replace('0', ''))
            if work_expr[j][-1] == '0':
                mul += 1
        else:
            mul = 1
        q += mul * sum(len(e) for e in work_expr[j + 1:])
print(q)

Ответ: \(30460483\)