Тип 5 № 18289
У исполнителя Делитель две команды, которым присвоены номера:
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)