多重背包计数问题 —— 硬币组合方案数


Submit solution

Points: 150
Time limit: 1.0s
Memory limit: 4M

Author:
Problem type
Allowed languages
C, C++

💰 多重背包计数问题 —— 硬币组合方案数

📝 题目描述

小明有若干种不同面额的硬币,每种硬币的数量有限。现在他想知道,使用这些硬币恰好凑出金额 M 元的方案数有多少种。


📥 输入格式
  • 第一行包含两个整数 N 和 M,分别表示硬币的种类数和目标金额。
  • 接下来 N 行,每行包含两个整数 v[i] 和 s[i],分别表示第 i 种硬币的面额和可用数量。

📤 输出格式

输出一个整数,表示恰好凑出金额 M 元的方案数。
由于结果可能很大,请将结果对 \(10^9 + 7\) 取模。


🔢 示例 1

输入:

2 5
1 3
2 2

输出:

2

解释:
有以下两种组合方式:

  • 1元 × 1 + 2元 × 2
  • 1元 × 5

🔢 示例 2

输入:

5 3
1 1
1 1
1 1
1 1
1 1

输出:

10

✅ 数据范围
  • \(1 \le N \le 100 \)
  • \(1 \le M \le 10,000 \)
  • \(1 \le v[i] \le 100 \)
  • \(1 \le s[i] \le 100 \)


Comments

There are no comments at the moment.