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