Условие: Тип 12 № 39241
• Статья подготовлена командой itpy
• Полный разбор задачи в Notion
Дана программа для редактора:
ПОКА нашлось (111) ИЛИ нашлось (222)
заменить (111, 22)
заменить (222, 1)
КОНЕЦ ПОКА
Известно, что исходная строка содержала больше 200 единиц и не содержала других цифр, а после выполнения программы получилась строка, содержащая только двойки. Какое наименьшее количество единиц могло быть в исходной строке?
Решение через Python и комментарии к нему:
Комментарии к коду решения:
- 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 - Прерываем выполнения цикла.