Банкомат выдаёт сумму меньшими купюрами
Есть список из купюр номиналом 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)