Untitled

Условие: Тип 12 № 27299

К исходной строке, содержащей более 60 единиц и не содержащей других символов, применили приведённую выше программу.

В результате получилась строка 221. Какое наименьшее количество единиц могло быть в исходной строке?

НАЧАЛО
ПОКА нашлось (111)
    заменить (111, 2)
    заменить (222, 11)
КОНЕЦ ПОКА
КОНЕЦ

Вариант 1: решение через функцию

Вариант 1: решение через функцию

Комментарии к первому варианту решения задачи:

  1. создаем функцию, которая будет принимать и обрабатывать нашу строку

  2. ПОКА нашлась подстрока “111” цикл while будет выполнять действия

  3. в таком случае заменим подстроку ”111” на ”2” именно 1 раз

  4. в таком случае заменим подстроку ”222” на ”1” именно 1 раз

  5. когда цикл заканчивается возвращаем полученную строку

  6. делаем перебор количества единиц ( от 60 до 100, т.к. в условии сказано, что единиц в строке было больше 60)

  7. вызываем функцию, и если исходная строка, содержащая более 60 единиц стала равна ‘221’

  8. то выводим количество единиц

  9. завершаем цикл, т.к. первое число и будет минимальным

# Код решения Вариант 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: через замену строки

Вариант 2: через замену строки

Комментарии ко второму варианту решения задачи:

  1. делаем перебор количества единиц (от 60 до 100, т.к. в условии сказано, что единиц в строке было больше 60)