Top.Mail.Ru
Ответы

Petuhon, задача про монеты

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

Напишите программу, которая определяет, какое минимальное количество чеканных монет нужно заплатить ведьмаку.

12345678910111213141516171819202122232425262728
 Num = int(input()) 
total = 1 
while Num > 0: 
    if Num >= 25: 
        Num -= 25 
        if Num >= 25: 
            while Num >= 25: 
                Num -= 25 
                total += 1 
    if Num >= 10: 
        Num -= 10 
        if Num >= 10: 
            while Num >= 10: 
                Num -= 10 
                total += 1 
    if Num >= 5: 
        Num -= 5 
        if Num >= 5: 
            while Num >= 5: 
                Num -= 5 
                total += 1 
    if Num >= 1: 
        Num -= 1 
        if Num >= 1: 
            while Num >= 1: 
                Num -= 1 
                total += 1 
print(total) 


Чего нехватает алгоритму, он не совсем правильно работает просто

По дате
По Рейтингу
Аватар пользователя
Новичок
4мес

Ты пытаешься сложениями / вычитаниями заменить деление / остаток:

123456
 n = int(input())
total = 0
for v in [25, 10, 5, 1]:
  total += n // v
  n %= v
print(total) 

Если же убрать из твоего кода всё лишнее, то останется:

123456789101112131415
 Num = int(input())
total = 0 # вот тут у тебя ошибка
while Num >= 25:
    Num -= 25
    total += 1
while Num >= 10:
    Num -= 10
    total += 1
while Num >= 5:
    Num -= 5
    total += 1
while Num >= 1:
    Num -= 1
    total += 1
print(total) 
Аватар пользователя
Оракул
4мес
123456789
 Num = int(input()) 
total = 0   
  
for coin in [25, 10, 5, 1]: 
    while Num >= coin: 
        total += 1 
        Num -= coin 
 
print(total) 
Аватар пользователя
Просветленный
4мес

У тебя изначально количество монет равно 1, мне кажется должно быть 0.
Вложенные циклы не нужны, после того, как инструкции выполнены можно перейти в выполнению следующей операции с помощью continue либо оформить код таким образом, чтобы в другие ветки в этой итерации не было захода с помощью elif