Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих командах v и w обозначают цепочки цифр.
заменить (v, w) – эта команда заменяет в строке первое слева вхождение цепочки v на цепочку w;
нашлось (v) – эта команда проверяет, встречается ли цепочка v в строке исполнителя Редактор.
Ниже приведена программа для исполнителя Редактор:
НАЧАЛО
ПОКА нашлось (722) ИЛИ нашлось (557)
ЕСЛИ нашлось (722)
ТО заменить (722, 57)
ИНАЧЕ заменить (557, 72)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
На вход этой программе подается строка, состоящая из 55 цифр; последняя цифра в строке — цифра 7, а остальные цифры — пятёрки. Какая строка получится в результате применения программы к этой строке? В ответе запишите полученную строку.
Python
Помогите пожалуйста с решением
У нас есть две замены
Рассмотрим замены в строке вида 5{n}7 = 5{n–4}55557:
Начальное количество 54 изменяется на 51, затем на 48 и так далее до значений 6, затем 3 < 4.
Последняя замена будет такой:
722 → 57
557 → 72
Прежде всего заметим, что все замены не изменяют количество цифр 7 в строке, то есть в любой строке будет ровно одна 7.Рассмотрим замены в строке вида 5{n}7 = 5{n–4}55557:
5{n–4}55557
5{n–4}5572
5{n–4}722
5{n–4}57
Как видно, любые четыре 5, стоящие перед 7, заменяются на одну, то есть количество 5 уменьшается на три, пока их не меньше четырёх.Начальное количество 54 изменяется на 51, затем на 48 и так далее до значений 6, затем 3 < 4.
Последняя замена будет такой:
5557
572
В строке 572 замены уже не производятся, то есть это и будет конечной строкой.
Всеволод Поляков
Спасибо, ответ верный
Заметим, что при первой замене в строке появится цифра 7, а при второй замене\u202f— цифра 5. Таким образом, каждая итерация цикла будет приводить к появлению чередующихся цифр 7 и 5. Поскольку последняя цифра в строке\u202f— 7, то цикл выполнится четное число раз, и в результате получится строка, состоящая из пятёрок и с чередующимися 7 и 5 на конце. Длина этой строки будет равна 55\u202f–\u202f2х, где х\u202f—\u202fколичество итераций цикла, т.е. должна быть четным числом. Попробуем найти такую строку, подставив её в исходный код программы и произведя несколько итераций вручную:
55 пятёрок: 555555555555555555555555555555555555555555555555557
заменяем первое вхождение 722 на 57: 555555555555555555555555555555555555555555555555557
заменяем первое вхождение 557 на 72: 555555555555555555555555555555555555555555572555557
заменяем первое вхождение 722 на 57: 555555555555555555555555555555555555555555572555557
заменяем первое вхождение 557 на 72: 55555555555555555555555555555555555555557272555557
...
Как видим, после каждой итерации на конце строки появляется чередующаяся последовательность 7 и 5. Следовательно, мы должны были получить строку, состоящую из пятёрок и имеющую чередующиеся 7 и 5 на конце. Такой строкой является:
555555555555555555555555555555555555555555555555557777777777777777777777777777777775
55 пятёрок: 555555555555555555555555555555555555555555555555557
заменяем первое вхождение 722 на 57: 555555555555555555555555555555555555555555555555557
заменяем первое вхождение 557 на 72: 555555555555555555555555555555555555555555572555557
заменяем первое вхождение 722 на 57: 555555555555555555555555555555555555555555572555557
заменяем первое вхождение 557 на 72: 55555555555555555555555555555555555555557272555557
...
Как видим, после каждой итерации на конце строки появляется чередующаяся последовательность 7 и 5. Следовательно, мы должны были получить строку, состоящую из пятёрок и имеющую чередующиеся 7 и 5 на конце. Такой строкой является:
555555555555555555555555555555555555555555555555557777777777777777777777777777777775
572
Сергей Костяной
s = '5' * 54 + '7'
while ('722' in s) or ('557' in s):
if '722' in s:
s = s.replace('722', '57', 1)
else:
s = s.replace('557', '72', 1)
print(s)
while ('722' in s) or ('557' in s):
if '722' in s:
s = s.replace('722', '57', 1)
else:
s = s.replace('557', '72', 1)
print(s)
Похожие вопросы
- Пожалуйста помогите решить задачу решение желательно! P.S (всё это выполняется в саблайм текст)
- Помогите, пожалуйста, решить задачу Python
- Решить две задачи на питоне. Помогите пожалуйста
- Задача по программированию. Помогите пожалуйста)) Скидывайте, пожалуйста, на любых языках, я все пойму!
- Товарищи. помогите пожалуйста с задачей по информатике
- Помогите пожалуйста с питоном(arcade)
- Помогите пожалуйста правильно организовать алгоритм цикла
- Написать функцию. Помогите пожалуйста!
- Помогите пожалуйста с задачей по python!
- Помогите, пожалуйста, с задачей на питоне!