Нажмите "Enter" для перехода к содержанию

Сколько чеканных монет необходимо заплатить ведьмаку, чтобы минимизировать стоимость его услуг? В мире ведьмака есть

Сколько чеканных монет необходимо заплатить ведьмаку, чтобы минимизировать стоимость его услуг? В мире ведьмака есть монеты номиналом 1, 5, 10 и 25. Напишите программу, которая определит минимальное количество чеканной монеты, которое нужно заплатить. Входные данные: одно натуральное число.

Ответ:

Для решения этой задачи нам потребуется алгоритм жадного выбора.

Жадный алгоритм предполагает, что мы всегда выбираем наиболее оптимальное решение на каждом шаге, надеясь, что в итоге мы получим глобально оптимальное решение. В данном случае мы будем выбирать самую большую монету, которую можем использовать, чтобы покрыть оставшуюся сумму.

Приведем пошаговое решение задачи:

1. Получаем от пользователя входное число — сумму, которую нужно заплатить.
2. Создаем переменную «количество монет» и инициализируем ее нулем. Эта переменная будет хранить количество чеканных монет.
3. В цикле выполняем следующие действия:
3.1. Проверяем, если сумма равна нулю, то завершаем цикл.
3.2. Если сумма больше или равна 25, то добавляем к «количество монет» целую часть от деления суммы на 25 (число монет номиналом 25, которые можно использовать для покрытия суммы). Также уменьшаем сумму на произведение этого числа на 25.
3.3. Если сумма больше или равна 10, то добавляем к «количество монет» целую часть от деления суммы на 10 (число монет номиналом 10, которые можно использовать для покрытия оставшейся суммы). Также уменьшаем сумму на произведение этого числа на 10.
3.4. Если сумма больше или равна 5, то добавляем к «количество монет» целую часть от деления суммы на 5 (число монет номиналом 5, которые можно использовать для покрытия оставшейся суммы). Также уменьшаем сумму на произведение этого числа на 5.
3.5. Если сумма больше или равна 1, то добавляем к «количество монет» сумму (число монет номиналом 1, которые можно использовать для покрытия оставшейся суммы). Также уменьшаем сумму на это значение.

4. Печатаем «количество монет».

Вот пример программы на языке Python, реализующей описанный алгоритм:

python
sum = int(input("Введите сумму, которую нужно заплатить: "))

coin_count = 0

while sum > 0:
    if sum >= 25:
        coin_count += sum // 25
        sum -= (sum // 25) * 25
    elif sum >= 10:
        coin_count += sum // 10
        sum -= (sum // 10) * 10
    elif sum >= 5:
        coin_count += sum // 5
        sum -= (sum // 5) * 5
    elif sum >= 1:
        coin_count += sum
        sum = 0

print("Минимальное количество чеканных монет: ", coin_count)

Например, если мы введем сумму 37, программа выведет «Минимальное количество чеканных монет: 10», что означает, что для оплаты суммы 37 нам нужно 10 монет.

Надеюсь, это решение понятно для вас и поможет вам решить задачу!