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