OpenFIPI 2.0
105
5
oge_cA3AA1
У исполнителя Удвоитель две команды, которым присвоены номера:
1. умножь на 2
2. прибавь 3
Первая из них увеличивает число на экране в 2 раза, вторая прибавляет к числу 3.
Составьте алгоритм получения из числа 1 числа 38, содержащий не более 5 команд. В ответе запишите только номера команд.
(Например, 12211 – это алгоритм:
умножь на 2
прибавь 3
прибавь 3
умножь на 2
умножь на 2
который преобразует число 1 в 32.)
Если таких алгоритмов более одного, то запишите любой из них.
21121
Решим обратным ходом.
Дано: начальное 1 → конечное 38.
Команды:
1. умножь на 2
2. прибавь 3
Обратные команды (от 38 к 1):
- раздели на 2 (если число чётное, обратная к 1)
- вычти 3 (обратная к 2)
---
38 — чётное → можно разделить на 2: 38 / 2 = 19 (обратная 1)
19 — нечётное, значит, получено не умножением на 2, а прибавлением 3.
Значит, 19 – 3 = 16 (обратная 2)
16 — чётное: 16 / 2 = 8 (обр. 1)
8 — чётное: 8 / 2 = 4 (обр. 1)
4 — чётное: 4 / 2 = 2 (обр. 1)
2 — чётное: 2 / 2 = 1 (обр. 1)
Обратный путь: 38 ← 19 ← 16 ← 8 ← 4 ← 2 ← 1 (6 обратных шагов), но нам нужно ≤ 5 команд (т.е. ≤ 5 обратных шагов).
Нужен другой путь: возможно, последней командой была не 1 (умножение), а 2 (прибавление 3).
Тогда 38 – 3 = 35 (обратная 2).
35 – 3 = 32 (обратная 2).
32 / 2 = 16 (обратная 1).
16 / 2 = 8 (обратная 1).
8 / 2 = 4 (обратная 1).
4 / 2 = 2 (обратная 1) — всё равно длиннее.
Попробуем 38 – 3 = 35 (обр.2) → 35 – 3 = 32 (обр.2) → 32 / 2 = 16 (обр.1) → 16 / 2 = 8 (обр.1) → 8 / 2 = 4 (обр.1) → 4–3=1 (обр. 2).
Обратные: 2,2,1,1,1,2 — 6 шагов.
Изменим: 38 – 3 = 35 (2) → 35 – 3 = 32 (2) → 32 / 2 = 16 (1) → 16 / 2 = 8 (1) → 8 – 3 = 5 (2) → 5 – 3 = 2 (2) → 2 / 2 = 1 (1) — 7 шагов.
Попробуем другой вариант: 38 / 2 = 19 (1) → 19 – 3 = 16 (2) → 16 / 2 = 8 (1) → 8 / 2 = 4 (1) → 4 – 3 = 1 (2).
Обратные: 1,2,1,1,2 — ровно 5 шагов.
Проверим:
1 → (1) 2
2 → (1) 4
4 → (1) 8
8 → (2) 11 — не 16. Ошибка! В обратном порядке перепутана последовательность.
Правильно выпишем обратный путь:
38 (обратная 1) → 19
19 (обратная 2) → 16
16 (обратная 1) → 8
8 (обратная 1) → 4
4 (обратная 2) → 1
Обратные команды: 1, 2, 1, 1, 2.
Прямой путь (от 1 к 38) — в обратном порядке команд:
1 (+3) = 4 (2)
4 (×2) = 8 (1)
8 (×2) = 16 (1)
16 (+3) = 19 (2)
19 (×2) = 38 (1)
Последовательность команд: 2, 1, 1, 2, 1 → **21121**.
Проверка:
1 (+3) = 4 ✅
4 (×2) = 8 ✅
8 (×2) = 16 ✅
16 (+3) = 19 ✅
19 (×2) = 38 ✅
**Ответ: 21121**
Просмотреть отправленные ответы oge_cA3AA1