Исполнитель Редактор получает на вход строку цифр и преобразовывает её. Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
В конструкции
ЕСЛИ условие
ТО команда1
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно).
В конструкции
ЕСЛИ условие
ТО команда1
ИНАЧЕ команда2
КОНЕЦ ЕСЛИ
выполняется команда1 (если условие истинно) или команда2 (если условие ложно).
Дана программа для редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (01, 210)
заменить (02, 3101)
заменить (03, 2012)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная строка начиналась с нуля и заканчивалась нулём, а между ними содержала только единицы, двойки и тройки. После выполнения данной программы получилась строка, содержащая
Заметим, что порядок цифр между нулями в исходной строке не важен.
Пусть Аналогично составим уравнение для двоек и троек. Получаем систему:
Вычитая из первого уравнение второе, получим y = 14, тогда из третьего уравнения z = 9. Тогда, подставив
Ответ: 40.
Приведём другое решение на языке Python.
for x in range(0,35):
for y in range(0,35):
for z in range(0,35):
s = '0' + x * '1' + y * '2' + z*'3' +'0'
while not('00' in s):
s = s.replace('01','210',1)
s = s.replace('02','3101',1)
s = s.replace('03','2012',1)
if s.count('1') == 70 and s.count('2') == 56 and s.count('3') == 23:
print(x+y+z+2)
break

