Тип 12 №39241
Дана программа для редактора:
ПОКА нашлось (111) ИЛИ нашлось (222)
заменить (111, 22)
заменить (222, 1)
КОНЕЦ ПОКА
Известно, что исходная строка содержала больше 200 единиц и не содержала других цифр, а после выполнения программы получилась строка, содержащая только двойки. Какое наименьшее количество единиц могло быть в исходной строке?
Комментарии к коду решения:
for n in range(201, 1000):
- Просто пробегаем числа большие 200.s = '1' * n
- Создание строки, состоящей изn
символов'1'
.while '111' in s or '222' in s:
- Запускаем цикл, пока в строке есть подстроки'111'
или'222'
.s = s.replace('111', '22', 1)
- Заменяем первую найденную подстроку'111'
на'22'
.s = s.replace('222', '1', 1)
- Заменяем первую найденную подстроку'222'
на'1'
.if len(s) == s.count('2'):
- Проверка: если длина строки равна количеству символов'2'
(строка содержащая только двойки).print(n)
- Выводим найденное числа n (кол-во единиц в исходной строке).break
- Прерываем выполнения цикла.
for n in range(201, 1000):
s = '1' * n
while '111' in s or '222' in s:
s = s.replace('111', '22', 1)
s = s.replace('222', '1', 1)
if len(s) == s.count('2'):
print(n)
break
**Присоединяйтесь и готовьтесь с нами: t.me/informatika_kege_itpy**
Автор статьи: @ilandroxxy