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

Рейтинг: -3Ответов: 1Опубликовано: 23.04.2023

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

Ответы

▲ 1

держи:

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)