У исполнителя Квадратор две команды, которым присвоены номера:
1. возведи в квадрат
2. вычти 1
Первая из них возводит число на экране во вторую степень, вторая уменьшает его на 1.
Исполнитель работает только с натуральными числами.
Составьте алгоритм получения из числа 2 числа 80, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 21221 — это алгоритм:
вычти 1
возведи в квадрат
вычти 1
вычти 1
возведи в квадрат,
который преобразует число 4 в 49.)
Если таких алгоритмов более одного, то запишите любой из них.
1. возведи в квадрат
2. вычти 1
Первая из них возводит число на экране во вторую степень, вторая уменьшает его на 1.
Исполнитель работает только с натуральными числами.
Составьте алгоритм получения из числа 2 числа 80, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 21221 — это алгоритм:
вычти 1
возведи в квадрат
вычти 1
вычти 1
возведи в квадрат,
который преобразует число 4 в 49.)
Если таких алгоритмов более одного, то запишите любой из них.
💡 Пошаговый разбор и решение:
Не любое число является квадратом целого числа, поэтому, если мы пойдем от числа 84 к числу 3, тогда однозначно восстановим программу. Полученные команды будут записываться справа налево.
1. Число 80 не является квадратом, поэтому оно получено вычетом единицы из числа 81: 80 = 81 − 1 (команда 2).
2. Число 81 является квадратом числа 9: 81 = 9 · 9 (команда 1).
3. Число 9 является квадратом числа 3: 9 = 3 · 3 (команда 1).
4. Число 3 не является квадратом, поэтому оно получено вычетом единицы из числа 4: 3 = 4 − 1 (команда 2).
5. Число 4 является квадратом числа 2: 4 = 2 · 2 (команда 1).
Искомая последовательность команд: 12112
Ответ: 12112.
Приведем другое решение на языке Python.
def f(flag, x):
if flag == 1:
return x**2
if flag == 2:
return x - 1
x = 2
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))))) == 80:
print(flag4, flag3, flag2, flag1, flag)
1. Число 80 не является квадратом, поэтому оно получено вычетом единицы из числа 81: 80 = 81 − 1 (команда 2).
2. Число 81 является квадратом числа 9: 81 = 9 · 9 (команда 1).
3. Число 9 является квадратом числа 3: 9 = 3 · 3 (команда 1).
4. Число 3 не является квадратом, поэтому оно получено вычетом единицы из числа 4: 3 = 4 − 1 (команда 2).
5. Число 4 является квадратом числа 2: 4 = 2 · 2 (команда 1).
Искомая последовательность команд: 12112
Ответ: 12112.
Приведем другое решение на языке Python.
def f(flag, x):
if flag == 1:
return x**2
if flag == 2:
return x - 1
x = 2
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))))) == 80:
print(flag4, flag3, flag2, flag1, flag)
Правильный ответ:
12112
📚 Похожие разобранные задания по предмету:
ID 32239 • Задание №14
Операнды арифметического выражения записаны в системе счисления с основанием 47:
1x24A47 + x202447 – 6x0847
...
ID 140242 • Задание №1
В кодировке UTF-16 каждый символ кодируется 16 битами. Никита написал текст (в нем нет лишних пробелов):
«Вра...
🔗 Другие задания линии №5 по предмету Информатика:
ID 140415
У исполнителя Альфа две команды, которым присвоены номера:
1. прибавь 1;
2. умножь на b
(b — н...
ID 140416
У исполнителя Бета две команды, которым присвоены номера:
1. прибавь 2;
2. умножь на b
(b — не...
ID 140417
У исполнителя Гамма две команды, которым присвоены номера:
1. прибавь 3;
2. умножь на b
(b — н...
ID 140418
У исполнителя Гамма две команды, которым присвоены номера:
1. прибавь 3;
2. умножь на b
(b — н...
ID 140419
У исполнителя Омега две команды, которым присвоены номера:
1. прибавь 4;
2. умножь на b
(b — н...