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

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

(Л. Шастин) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах \(v\) и \(w\) обозначают цепочки цифр.

А) заменить (v, w)

Эта команда заменяет в строке первое слева вхождение цепочки \(v\) на цепочку \(w\). Например, выполнение программы заменить (111, 27) преобразует строку 05111150 в строку 0527150. Если в строке нет вхождений цепочки \(v\), то выполнение команды заменить (u, v) не меняет эту строку.

Б) нашлось (v)

Эта команда проверяет, встречается ли цепочка \(v\) в строке исполнителя Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не меняется.

Дана программа для Редактора:

НАЧАЛО
  ПОКА нашлось (>3) ИЛИ нашлось(>5) ИЛИ нашлось (>7)
    ЕСЛИ нашлось (>3)
      ТО заменить (>3, 55>)
    КОНЕЦ ЕСЛИ
    ЕСЛИ нашлось (>5)
      ТО заменить (>5, 5>3)
    КОНЕЦ ЕСЛИ
    ЕСЛИ нашлось (>7)
      ТО заменить (>7, 3>5)
    КОНЕЦ ЕСЛИ
  КОНЕЦ ПОКА
КОНЕЦ

На вход приведённой выше программе поступает строка, начинающаяся с символа «>», а затем содержащая \(10\) цифр «\(3\)», \(10\) цифр «\(5\)» и \(10\) цифр «\(7\)», расположенных в произвольном порядке.Определите сумму числовых значений цифр строки, получившейся в результате выполнения программы. В ответе запишите только число.

Решение:

Проведём «численный эксперимент» для нескольких значений исходной строки, в которых цифры перемешаны.

Python


from random import shuffle

arr = ['3'] * 10 + ['5'] * 10 + ['7'] * 10
for i in range(10):
    
    shuffle(arr)
    s = '>' + ''.join(arr)

    while '>3' in s or '>5' in s or '>7' in s:
        if '>3' in s:
            s = s.replace('>3', '55>', 1)
        elif '>5' in s:
            s = s.replace('>5', '5>3', 1)
        else:
            s = s.replace('>7', '3>5', 1)


    s = s.replace('>', '')
    print(sum(int(x) for x in s))

Для каждой строки получаем на выходе программы \(430.\) Это не строгое математическое доказательство, что всегда будет получаться такое число. Но возникает твёрдая уверенность, что такое \(430\) будет получаться всегда. :)

Ответ: \(430\)