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