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