Ctrl K

Ровно нужный балл

Сложная
В олимпиаде есть несколько видов задач. Вид i описан парой kinds[i] = [count, points]: таких задач count штук, каждая стоит points баллов. Посчитайте, сколькими способами можно набрать ровно goal баллов. Задачи одного вида неразличимы: важно лишь, сколько задач каждого вида решено. Например, решить первую и вторую задачу вида — то же самое, что первую и третью. Ответ может быть большим — верните его по модулю 10⁹ + 7.
Пример 1
goal=5, kinds=[[3, 1], [2, 2], [1, 4]] → 3

Способы: 1+2+2, 1+1+1+2, 1+4. Набрать 5 одними единицами нельзя — их только три. Итого 3.

Пример 2
goal=7, kinds=[[2, 3]] → 0

Из троек можно набрать только 0, 3 или 6 — способов нет.

Ограничения
  • 1 ≤ goal ≤ 1000
  • 1 ≤ len(kinds) ≤ 50
  • kinds[i] = [count, points], 1 ≤ count, points ≤ 50
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиВода между стенами СложнаяСамый большой горящий блок СложнаяПрибыль за две сделки СложнаяВсе способы расставить пробелы СложнаяПереход через пещеру Сложная
загружаем Python…
Вход
goal=5, kinds=[[3, 1], [2, 2], [1, 4]]
Ожидается
3

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