(№ 4127) (А. Богданов) Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки символов.
1 2 |
1. заменить (v, w) 2. нашлось (v) |
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w. Если цепочки v в строке нет, эта команда не изменяет строку. Вторая команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Дана программа для исполнителя Редактор:
1 2 3 4 5 |
ПОКА нашлось(43) ИЛИ нашлось(53) ЕСЛИ нашлось(43) ТО заменить(43, 33) ИНАЧЕ заменить(53, 433) КОНЕЦ ПОКА |
Определите максимально возможное количество цифр 3, которое может получиться в результате применения этой программы к строке, состоящей из 17 цифр "3", 23 цифр "4" и 29 цифр "5", идущих в произвольном порядке.
Решение:
Максимально возможное количество цифр 3 может получиться в результате применения программы к строке, состоящей из 17 цифр "3", 23 цифр "4" и 29 цифр "5", идущих в произвольном порядке, только в том случае, когда программа осуществит максимальное число замен:
- "43" на "33" и
- "53" на "433".
А это возможно только в том случае, когда все цифры будут расположены попарно определенным образом (учтите, что замена происходит только тогда, когда цифра "3" стоит после цифры "4" или после цифры "5").
Давайте рассмотрим некоторые возможные варианты:
Вариант 1:
Вариант 2 (максимальное количество цифр "3"):
Решение на Pyton:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
"Зададим исходную строку рациональным образом" s = '5' * 12 + '4' * 23 + '53' * 17 "Зададим цикл перебора и замены значений в соответствии с условиями задачи" while ('43' in s) or ('53' in s): if ('43' in s): s = s.replace('43', '33', 1) print(s) else: s = s.replace('53', '433', 1) print(s) "Посчитаем количество цифр 3" n = 0 for i in range(0,len(s)): if s[i] == '3': n = n + 1 print("Количество цифр 3 в строке: ", n) |