Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА нашлось (01) ИЛИ нашлось (02) ИЛИ нашлось (03)
заменить (01, 30)
заменить (02, 101)
заменить (03, 202)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля, а далее содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая
Заметим, что порядок цифр в исходной строке не важен.
Заметим, что после преобразования исходной строки получилась строка, содержащая
Поскольку строка после выполнения также должна содержать
Тогда, чтобы получившаяся строка содержала
Ответ: 45.
Приведём другое решение на языке Python.
for x in range(50):
for y in range(50):
for z in range(50):
num = '0' + '1' * x + '2' * y + '3' * z
while '01' in num or '02' in num or '03' in num:
num = num.replace('01', '30', 1)
num = num.replace('02', '101', 1)
num = num.replace('03', '202', 1)
if num.count('1') == 15 and num.count('2') == 10 and num.count('3') == 60:
print(x)

