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