
Цикл ПОКА условие последовательность команд КОНЕЦ ПОКА выполняется, пока условие истинно. Дана
программа для редактора: НАЧАЛО ПОКА нашлось (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