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