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