У исполнителя Вычислитель две команды, которым присвоены номера:
1. приписать 1
2. разделить на 3
Первая из них приписывает к числу справа 1, вторая уменьшает его в 3 раза. Составьте алгоритм получения из 5 числа 19, содержащий не более 5 команд. В ответе запишите номера команд.
(Например, 22121 — это алгоритм:
разделить на 3
разделить на 3
приписать 1
разделить на 3
приписать 1,
который преобразует число 18 в число 71.)
Если таких алгоритмов более одного, то запишите любой из них.
Чтобы использовать команду «разделить на 3», число должно быть кратным 3. Используем команду 1 и получим число 51. Число 51 кратно трем, поэтому используем команду 2 и получим число 17. Опять используем команду 1, чтобы получить число кратное трем. Используем два раза команду 2 и из числа 171 получим число 19.
Ответ: 12122.
Приведем другое решение на языке Python.
def f(flag, x):
if flag == 1:
return x*10 + 1
if flag == 2:
return x / 3
x = 5
for flag in range(1, 3):
for flag1 in range(1, 3):
for flag2 in range(1, 3):
for flag3 in range(1, 3):
for flag4 in range(1, 3):
if f(flag, f(flag1, f(flag2, f(flag3, f(flag4, x))))) == 19:
print(flag4, flag3, flag2, flag1, flag)



