В банкомате len(notes) кассет: в кассете i лежит counts[i] купюр номиналом notes[i]. Клиент просит amount рублей.
Верните наименьшее число купюр, которым можно выдать ровно amount, или -1, если выдать нацело нельзя. Для amount = 0 ответ 0.
В работе: Банкомат или касса самообслуживания: в конце дня кассета с тысячами пуста, и сумму 3 500 приходится собирать из того, что осталось.
Пример 1
Ввод
notes = [5000, 2000, 1000] counts = [3, 3, 0] amount = 6000
Вывод
3
5000 + 1000 нельзя, тысяч нет. 2000 × 3 — три купюры.
Пример 2
Ввод
notes = [100, 50] counts = [5, 5] amount = 131
Вывод
-1
131 нацело не собрать — этот случай был в задаче на собеседовании.
Ограничения
- 0 ≤
amount≤ 2·10⁴ - 1 ≤ число кассет ≤ 8
- 1 ≤
notes[i]≤ 5000, номиналы различны - 0 ≤
counts[i]≤ 100 - Лимит — 1 с на тест.
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль.
def min_notes(notes, counts, amount):
Источник: Яндекс, отчёт кандидата на Хабре, 2026. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.