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