У исполнителя Квадратор две команды, которым присвоены номера:
1. возведи в квадрат
2. вычти 5
Первая из них возводит число на экране во вторую степень, вторая вычитает из числа 5.
Исполнитель работает только с натуральными числами.
Составьте алгоритм получения из числа 3 числа 6, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 21221 — это алгоритм:
вычти 5
возведи в квадрат
вычти 5
вычти 5
возведи в квадрат,
который преобразует число 10 в 225.)
Если таких алгоритмов более одного, то запишите любой из них.
Не любое число является квадратом целого числа, поэтому, если мы пойдем от числа 6 к числу 3, тогда однозначно восстановим программу. Полученные команды будут записываться справа налево.
1. Число 6 не является квадратом, поэтому оно получено вычетом пяти из числа 11:
2. Число 11 не является квадратом, поэтому оно получено вычетом пяти из числа 16:
3. Число 16 является квадратом числа 4: 16 = 4 · 4 (команда 1).
4. Получим число 4 вычетом пяти из числа 9:
5. Число 9 является квадратом числа 3: 9 = 3 · 3 (команда 1).
Искомая последовательность команд: 12122
Ответ: 12122.
Приведем другое решение на языке Python.
def f(flag, x):
if flag == 1:
return x**2
if flag == 2:
return x - 5
x = 3
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))))) == 6:
print(flag4, flag3, flag2, flag1, flag)



