У исполнителя Делитель две команды, которым присвоены номера:
1. раздели на 2
2. вычти 1
Первая из них уменьшает число на экране в 2 раза, вторая уменьшает его на 1. Исполнитель работает только с натуральными числами. Составьте алгоритм получения из чиcла 65 числа 4, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 12112 – это алгоритм:
раздели на 2
вычти 1
раздели на 2
раздели на 2
вычти 1,
который преобразует число 42 в число 4.)
Если таких алгоритмов более одного, то запишите любой из них.
Поскольку Делитель работает только с натуральными числами и число 65 — нечетное. Для того, чтобы получить четное число используем команду 2 (вычесть 1). Из числа 64 число 4 можно получить, выполнив команду 1 четыре раза, следовательно, из числа 65 можно получить число 4 последовательностью команд 21111.
Ответ: 21111.
Приведем другое решение на языке Python.
def f(flag, x):
if flag == 1:
return x / 2
if flag == 2:
return x - 1
x = 65
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))))) == 4:
print(flag4, flag3, flag2, flag1, flag)



