Форум » Выполнение и анализ алгоритмов для исполнителей » 14я » Ответить

14я

nikson: Добрый день! Не пойму где ошибаюсь. Вот условие: Дана программа: НАЧАЛО ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03) заменить (01, 103) заменить (02, 10) заменить (03, 210) КОНЕЦ ПОКА КОНЕЦ Известно, что исходная строка начинается с цифры 0, а далее содержит 12 цифр 1, 15 цифр 2 и 17 цифр 3, расположенных в произвольном порядке. Сколько цифр 2 будет в строке, которая получится после выполнения данной программы? Мой код: s = "0"+ 12*'1'+ 15*'2' + 17*'3' while s.find('01')!=-1 or s.find('02')!=-1 or s.find('03')!=-1: s = s.replace('01','103',1) s = s.replace('02','10', 1) s = s.replace('03','210',1) print(s.count("2")) Ответ программы 29. А в ответе 110

Ответов - 5

nikson: Если решать без программы, то каждая "1" дает столько же "2". Например 01 - 103 - 210. Значит 12 единиц дает 12 двоек в конечной строке, Все двойки из исходной строки меняются на 1 и переставляют 0: 02 - 10, Каждая тройка дает одну двойку и единицу. Было 17 троек стало 17 двоек и 17 единиц Итог 12+17 = 29 Как в программе

nikson: Если прокрутить в ручную на маленькой строке (для понимания алгоритма): 0112233 10312233 121012233 1211032233 12112102233 12112110233 12112111033 1211211121210 Итог четыре 2йки. Две вместо двух "1" и две вместо двух "3" подтверждает выше сказанное

Поляков: nikson пишет: А в ответе 110 Почему есть уверенность, что ответ правильный?


nikson: Поляков пишет: Почему есть уверенность, что ответ правильный? А слона, то я и не заметил. Пол дня ломал голову - не в ту графу посмотрел!!!! Ответ 29 :((

defree26: s = "0"+ 12*'1'+ 15*'2' + 17*'3' while '01' in s or '02' in s or '03' in s: s = s.replace('01','103',1) s = s.replace('02','10', 1) s = s.replace('03','210',1) print(s.count("2"))



полная версия страницы