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