Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
1) заменить (v, w);
2) нашлось (v).
Первая команда заменяет в строке первое слева вхождение цепочки v на цепочку w, вторая проверяет, встречается ли
НАЧАЛО
ПОКА нашлось (10) ИЛИ нашлось (1)
ЕСЛИ нашлось (10)
ТО заменить (10, 001)
ИНАЧЕ заменить (1, 00)
КОНЕЦ ЕСЛИ
КОНЕЦ ПОКА
КОНЕЦ
Рассмотрим пример.
Возьмём исходную
Сделаем вывод: на каждом шаге в строчке добавляются два нуля слева от единицы и удаляется один нуль справа от неё. Число нулей удвоилось. Последним шагом единица заменяется на два нуля.
Применим этот алгоритм на комбинацию с единицей и
Ответ: 152.
Приведём другое решение на языке Python.
s = '1' + '0' * 75
while ('10' in s) or ('1' in s):
if '10' in s:
s = s.replace('10', '001', 1)
else:
s = s.replace('1', '00', 1)
print(s.count('0'))

