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