OpenFIPI 2.0
105
5
oge_CE6EA0
У исполнителя Вычислитель две команды, которым присвоены номера:
1. умножь на 2
2. вычти 1
Первая из них увеличивает число на экране в 2 раза, вторая уменьшает его на 1.
Составьте алгоритм получения из числа 9 числа 29, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 12212 – это алгоритм:
умножь на 2
вычти 1
вычти 1
умножь на 2
вычти 1,
который преобразует число 5 в число 15.)
Если таких алгоритмов более одного, запишите любой из них.
21212
Решим обратным ходом.
Дано: начальное 9 → конечное 29.
Команды:
1. умножь на 2
2. вычти 1
Обратные команды (от 29 к 9):
- прибавить 1 (обратная к 2)
- разделить на 2 (обратная к 1), только если число чётное.
---
29 нечётное → предыдущее 30 (обратная 2, +1).
30 чётное → делим на 2 = 15 (обратная 1).
15 нечётное → +1 = 16 (обратная 2).
16 чётное → /2 = 8 (обратная 1).
8 чётное → /2 = 4 (обратная 1) — перескочили 9?
4 → +1=5 (обратная 2) → 5+1=6 (обратная 2) → 6/2=3 (обратная 1) — не выходит.
Попробуем иначе: обратный путь 29 → 30 → 15 → 16 → 8 (уже 4 шага назад, до 9 не дошли). 8 → +1=9. Это 5 обратных шагов:
29 ← 30 (2)
30 ← 15 (1)
15 ← 16 (2)
16 ← 8 (1)
8 ← 9 (2) — всё правильно.
Обратные команды: 2, 1, 2, 1, 2.
Прямые команды (от 9 к 29) — в обратном порядке обратных команд:
9 → 8 (2)
8 → 16 (1)
16 → 15 (2)
15 → 30 (1)
30 → 29 (2)
Проверим:
9 (–1) = 8 (2)
8 (×2) = 16 (1)
16 (–1) = 15 (2)
15 (×2) = 30 (1)
30 (–1) = 29 (2) ✅
Команды: **2, 1, 2, 1, 2** → **21212**.
**Ответ: 21212**
Просмотреть отправленные ответы oge_CE6EA0