Задание №5 — Алгоритмы и программирование
У исполнителя Квадратор две команды, которым присвоены номера:
1. возведи в квадрат
2. вычти 3
Первая из них возводит число на экране во вторую степень, вторая уменьшает его на 3.
Исполнитель работает только с натуральными числами.
Составьте алгоритм получения из числа 3 числа 30, содержащий не более
5 команд. В ответе запишите только номера команд.
(Например, 12221 это алгоритм:
возведи в квадрат
вычти 3
вычти 3
вычти 3
возведи в квадрат,
который преобразует число 4 в 49.)
Если таких алгоритмов более одного, то запишите любой из них.
Правильный ответ
12122
Пояснение
Решение.
Нам необходимо составить алгоритм для исполнителя «Квадратор», который преобразует число в число за команд или меньше. Доступны две команды:
1. Возведение в квадрат ();
2. Вычитание числа ().
Поскольку нам нужно получить число , а возведение в квадрат очень быстро увеличивает числа, попробуем проанализировать возможные пути с конца (от к ), используя обратные операции: извлечение корня и прибавление .
1. Рассмотрим конечное число . Оно не является полным квадратом, значит, последней командой не могло быть возведение в квадрат. Следовательно, последней была команда 2 (вычти ).
До выполнения этой команды было число: .
Алгоритм: .
2. Число также не является полным квадратом. Значит, перед ним снова была команда 2.
До выполнения этой команды было число: .
Алгоритм: .
3. Число является полным квадратом (). Значит, оно могло быть получено командой 1 из числа .
Алгоритм: .
4. Число не является полным квадратом. Значит, перед ним была команда 2.
До выполнения этой команды было число: .
Алгоритм: .
5. Число является полным квадратом (). Оно могло быть получено командой 1 из нашего исходного числа .
Алгоритм: .
Проверим полученную последовательность команд (12122) в прямом порядке:
1) Команда 1:
2) Команда 2:
3) Команда 1:
4) Команда 2:
5) Команда 2:
Число получено из числа ровно за команд. Последовательность номеров команд: 12122.
Ответ: 12122
Источник: ФИПИ