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