Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. Дана программа для редактора: НАЧАЛО ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03) заменить (01, 30) заменить (02, 101) заменить (03, 202) КОНЕЦ ПОКА КОНЕЦ Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая 15 единиц, 10 двоек и 60 троек. Сколько единиц было в исходной строке?
Answers & Comments
Ответ:
Методом подбора нашёл (на Питоне):
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 единиц!