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