Ctrl K

Сколькими способами наклеить марки

Средняя
На почте продаются марки разных номиналов, они перечислены в массиве stamps, и марок каждого номинала сколько угодно. Нужно наклеить на конверт марки ровно на сумму total. Посчитайте, сколько существует разных наборов марок. Порядок наклейки не важен: наборы различаются только количеством марок каждого номинала. Если собрать сумму нельзя, верните 0. Ответ гарантированно помещается в 32-битное знаковое целое.
Пример 1
total=6, stamps=[1, 3, 4] → 4

Подходят наборы 1+1+1+1+1+1, 3+1+1+1, 3+3, 4+1+1 — всего 4.

Пример 2
total=7, stamps=[2, 4] → 0

Из чётных номиналов нечётную сумму не собрать.

Пример 3
total=0, stamps=[5] → 1

Нулевую сумму даёт ровно один набор — пустой.

Ограничения
  • 1 ≤ len(stamps) ≤ 300
  • 1 ≤ stamps[i] ≤ 5000
  • Все номиналы различны
  • 0 ≤ total ≤ 5000
  • Ответ меньше 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиМеньше всего прыжков до конца СредняяСамая прибыльная серия дней СредняяДобраться до последней клетки СредняяМаршруты тележки по складу СредняяДешёвый маршрут из угла в угол Средняя
загружаем Python…
Вход
total=6, stamps=[1, 3, 4]
Ожидается
4

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 74 теста на сервере, включая скрытые.