Исполнитель Редактор получает на вход строку цифр и преобразует её.
Редактор может выполнять две команды, в обеих
А) заменить (v, w).
Эта команда заменяет в строке первое слева вхождение
Если в строке нет вхождений
Б) нашлось (v).
Эта команда проверяет, встречается ли
Редактор. Если она встречается, то команда возвращает логическое значение «истина», в противном случае возвращает значение «ложь». Строка исполнителя при этом не изменяется.
Цикл
ПОКА условие
последовательность команд
КОНЕЦ ПОКА
выполняется, пока условие истинно.
Дана программа для редактора:
НАЧАЛО
ПОКА НЕ нашлось (00)
заменить (011, 20)
заменить (022, 10)
заменить (01, 220)
заменить (02, 110)
КОНЕЦ ПОКА
КОНЕЦ
Известно, что исходная
Какое наибольшее количество двоек может быть
Заметим, что после первой замены останется
c1*0 + c2*1 + c3*0 + c4*2 == 47.
Для двоек должно работать условие:
c1*1 + c2*0 + c3*2 + c4*0 < 70.
По условию задачи
Приведём решение на языке Python.
maxi = 0
for c1 in range(0,30):
for c2 in range(0,30):
for c3 in range(0,30):
for c4 in range(0,30):
if (c1*0 + c2*1 + c3*0 + c4*2 == 47 and c1*1 + c2*0 + c3*2 + c4*0 < 70 and 2*c1 + c3 == 2*c2 + c4):
if (c1*1 + c2*0 + c3*2 + c4*0)> maxi:
maxi = c1*1 + c2*0 + c3*2 + c4*0
print(maxi)
Ответ: 68.

