Давайте постепенно решим каждую из задач.
Задача 1: Выдача сдачи
Мы должны определить, как кассир выдает сдачу в размере 745 рублей, используя минимальное количество банкнот номиналами 1000, 500, 100, 50 и 10 рублей. Для этого будем следовать алгоритму.
Вводим сумму:
Применяем алгоритм для определения количества каждой банкноты:
Банкноты по 1000 рублей:
[
k1000 = s \div 1000 = 745 \div 1000 = 0
]
( s = s \mod 1000 = 745 \mod 1000 = 745 )
Банкноты по 500 рублей:
[
k500 = s \div 500 = 745 \div 500 = 1
]
( s = s \mod 500 = 745 \mod 500 = 245 )
Банкноты по 100 рублей:
[
k100 = s \div 100 = 245 \div 100 = 2
]
( s = s \mod 100 = 245 \mod 100 = 45 )
Банкноты по 50 рублей:
[
k50 = s \div 50 = 45 \div 50 = 0
]
( s = s \mod 50 = 45 \mod 50 = 45 )
Банкноты по 10 рублей:
[
k10 = s \div 10 = 45 \div 10 = 4
]
( s = s \mod 10 = 45 \mod 10 = 5 )
Итог:
- ( k1000 = 0 )
- ( k500 = 1 )
- ( k100 = 2 )
- ( k50 = 0 )
- ( k10 = 4 )
- Остаток = 5 (который невозможно выдать с помощью имеющихся банкнот)
Таблица значений для переменной:
| Номинал |
Количество |
Остаток |
| 1000 |
0 |
745 |
| 500 |
1 |
245 |
| 100 |
2 |
45 |
| 50 |
0 |
45 |
| 10 |
4 |
5 |
Итак, для суммы 745 рублей кассир выдает 1 банкноту по 500 рублей, 2 банкноты по 100 рублей и 4 банкноты по 10 рублей, оставляя 5 рублей невыданными.
Задача 2: Алгоритм получения числа
Теперь нам нужно составить алгоритм, чтобы преобразовать число 89 в 24, используя команды:
- Разделить на 2
- Прибавить 1
Рассмотрим обратный процесс: как из 24 получить 89, чтобы потом определить последовательность команд в обратном порядке.
- Начнем с числа 24:
- 24 → (прибавить 1) → 25
- 25 → (разделить на 2) (нельзя, так как 25 нечетное)
- 25 → (прибавить 1) → 26
- 26 → (разделить на 2) → 13
- 13 → (прибавить 1) → 14
- 14 → (разделить на 2) → 7
- 7 → (прибавить 1) → 8
- 8 → (разделить на 2) → 4
- 4 → (разделить на 2) → 2
- 2 → (разделить на 2) → 1
- 1 → (прибавить 1) → 2
- 2 → (разделить на 2) → 1
Пробуем составить протяженный путь. Если минимизировать:
- 89 → (разделить на 2) → 44 (первый шаг)
- 44 → (разделить на 2) → 22 (второй шаг)
- 22 → (разделить на 2) → 11 (третий шаг)
- 11 → (прибавить 1) → 12 (четвертый шаг)
- 12 → (разделить на 2) → 6 (пятый шаг)
- 6 → (разделить на 2) → 3 (шестой)
- 3 → (прибавить 1) → 4 (седьмой)
Обратно:
- 24 (1)
- 25 (2)
- 26 (2)
- 27 (1)
- 28 (4)
Поэтому один из возможных алгоритмов, который приводит к 24 из 89:
21111 — где:
- 2: Раздели на 2
- 1: Прибавь 1
- 1: Прибавь 1
- 1: Прибавь 1
- 1: Прибавь 1
Есть много различных вариантов алгоритмов, и этот — один из них. Вы можете использовать другой порядок команд, если это приведет к такому же результату.