Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. Дана
программа для редактора: НАЧАЛО ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03) заменить (01, 30) заменить (02, 101) заменить (03, 202) КОНЕЦ ПОКА КОНЕЦ Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 15 единиц, 10 двоек и 60 троек. Сколько единиц было в исходной строке?Ответы на вопрос
        Ответ:
Методом подбора нашёл (на Питоне):
a = '0333333333322222111111111111111111111111111111111111111111111'
print(a)
while a.find('01') != -1 or a.find('02') != -1 or a.find('03') != -1:
a=a.replace('01', '30')
a=a.replace('02','101')
a=a.replace('03','202')
print(a)
print(f'1 = {a.count(str(1))}')
print(f'2 = {a.count(str(2))}')
print(f'3 = {a.count(str(3))}')
Получается, после первого нуля каждая цифра 3 увеличивает количество результирующих 1 2 и 3 на 1 по каждой:
a = '03'
2130
1 = 1
2 = 1
3 = 1
a='033'
2132130
1 = 2
2 = 2
3 = 2
И так далее. Следовательно, я набрал 10 двоек с помощью десяти цифр 3 после первого нуля.
Далее, если после тройки идёт двойка, то увеличивается количество цифр 1 и 2:
a = '033333333332'
213213213213213213213213213213130
1 = 11
2 = 10
3 = 11
Набрал 5 двоек, чтобы получилось 15 единиц. Ну и далее, цифра 1 в конце добавляет количество единиц в результате, то есть чтобы получилось 60 единиц, я к 15 добавил 45:
a = '0333333333322222111111111111111111111111111111111111111111111'
21321321321321321321321321321313131313133333333333333333333333333333333333333333333330
1 = 15
2 = 10
3 = 60
ОТВЕТ: 45 единиц!
            Давайте проанализируем, что делает данная программа.
Исходная строка начинается с нуля и содержит только единицы, двойки и тройки. Программа выполняет следующие действия в цикле ПОКА:
- Поиск "01" и его замена на "30".
 - Поиск "02" и его замена на "101".
 - Поиск "03" и его замена на "202".
 
Давайте рассмотрим, как изменяется строка после каждой итерации цикла:
- После первой итерации строка будет содержать "30" вместо "01" и все еще единицы, двойки и тройки.
 - После второй итерации строка будет содержать "30101" вместо "02" и все еще единицы, двойки и тройки.
 - После третьей итерации строка будет содержать "30101202" вместо "03" и все еще единицы, двойки и тройки.
 
Теперь давайте рассмотрим, сколько раз выполняется цикл до того момента, пока не останется ни одной пары "01", "02" или "03" в строке.
Исходная строка содержала 15 единиц, 10 двоек и 60 троек. Это означает, что в ней было 15 пар "01" и 10 пар "02". После первой итерации цикла останется 13 пар "01" и 10 пар "02". После второй итерации останется 11 пар "01" и 9 пар "02". После третьей итерации останется 10 пар "01" и 9 пар "02". После четвертой итерации останется 10 пар "01" и 8 пар "02". И, наконец, после пятой итерации останется 9 пар "01" и 8 пар "02".
На этом этапе не остается ни одной пары "01" или "02" в строке, и цикл завершается. Строка будет выглядеть так: "30101202", и в ней останется 9 пар "01".
Итак, в исходной строке было 15 пар "01", что означает, что было 15 * 2 = 30 единиц в исходной строке.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
- 
			
Математика
 - 
			
Литература
 - 
			
Алгебра
 - 
			
Русский язык
 - 
			
Геометрия
 - 
			
Английский язык
 - 
			
Химия
 - 
			
Физика
 - 
			
Биология
 - 
			
Другие предметы
 - 
			
История
 - 
			
Обществознание
 - 
			
Окружающий мир
 - 
			
География
 - 
			
Українська мова
 - 
			
Информатика
 - 
			
Українська література
 - 
			
Қазақ тiлi
 - 
			
Экономика
 - 
			
Музыка
 - 
			
Право
 - 
			
Беларуская мова
 - 
			
Французский язык
 - 
			
Немецкий язык
 - 
			
МХК
 - 
			
ОБЖ
 - 
			
Психология
 - 
			
Физкультура и спорт
 - 
			
Астрономия
 - 
			
Кыргыз тили
 - 
			
Оʻzbek tili
 
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			
			