Банкомат выдаёт сумму меньшими купюрами

Есть список из купюр номиналом 10,20,50, 100, 200, 500. Код принимает сумму и должен вывести её минимальными купюрами, но не более 10 купюр одного номинала. Понимаю, что остаток от выдачи допустим первых 10 купюр по 10 должен Делиться на 20,но как это все сделать... Помогите пожалуйста


Ответы (1 шт):

Автор решения: Alex alexeev

держи:

def min_notes(sum):
    notes = [500, 200, 100, 50, 20, 10] # список номиналов купюр
    counts = [0] * len(notes) # список количества купюр каждого номинала
    remainder = sum # остаток от суммы

    for i in range(len(notes)):
        if remainder == 0:
            break
        elif remainder < notes[i]:
            continue
        else:
            count = min(remainder // notes[i], 10) # количество купюр не более 10
            counts[i] = count
            remainder -= count * notes[i]

    if remainder > 0:
        print("Невозможно выдать сумму минимальными купюрами.")
    else:
        print("Минимальное количество купюр:")
        for i in range(len(notes)):
            if counts[i] > 0:
                print(str(notes[i]) + " x " + str(counts[i]))

# пример использования
min_notes(1230)
→ Ссылка