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