Условие: Тип 12 № 27299
К исходной строке, содержащей более 60 единиц и не содержащей других символов, применили приведённую выше программу.
В результате получилась строка 221. Какое наименьшее количество единиц могло быть в исходной строке?
НАЧАЛО
ПОКА нашлось (111)
заменить (111, 2)
заменить (222, 11)
КОНЕЦ ПОКА
КОНЕЦ
Вариант 1: решение через функцию
Комментарии к первому варианту решения задачи:
создаем функцию, которая будет принимать и обрабатывать нашу строку
ПОКА нашлась подстрока “111” цикл while
будет выполнять действия
в таком случае заменим подстроку ”111” на ”2” именно 1 раз
в таком случае заменим подстроку ”222” на ”1” именно 1 раз
когда цикл заканчивается возвращаем полученную строку
делаем перебор количества единиц ( от 60 до 100, т.к. в условии сказано, что единиц в строке было больше 60)
вызываем функцию, и если исходная строка, содержащая более 60 единиц стала равна ‘221’
то выводим количество единиц
завершаем цикл, т.к. первое число и будет минимальным
# Код решения Вариант 1
def F(s):
while '111' in s:
s = s.replace('111', '2', 1)
s = s.replace('222', '1', 1)
return s
for x in range(60, 100):
if F('1' * x) == '221':
print(x)
break
Вариант 2: через замену строки
Комментарии ко второму варианту решения задачи: