SP22766 MSET - Make Sets
题目描述
给定一个整数 **N**,你拥有从 1 到 N 的每个数字的 **K** 个副本。也就是说,你总共有 **N\*K** 个数字。现在需要将这些数字分成 **M** 个集合 **s1, s2, s3, ..., sm**。每个集合中的数字必须唯一,一个数字不能在同一个集合中出现多次(集合可以为空)。
我们定义 D 为所有 M 个集合中元素数量的总和,也就是说,D 是这些集合“大小”的总和。
接下来,我们定义 **G(i)** 表示能够构造出 M 个集合并且使得此时总和 D 等于 i 的方案数。
需要计算 **G(0) + G(1) + ... + G(N\*K)**,并将结果对 10^9 + 7 取模。
注意:集合的顺序是重要的,因为集合本身是经过编号的。
**举个例子:**
当 N=2, M=2, K=2 时,
初始数字为 (1, 1, 2, 2)
- G(0)=1,
即两集合都��空 { }, { }。
- G(1)=4,
可能的方案包括:
{1}, { }
{2}, { }
{ }, {1}
{ }, {2}
- G(2)=6,
可能的方案包括:
{1}, {2}
{2}, {1}
{1}, {1}
{2}, {2}
{1,2}, { }
{ }, {1,2}
- G(3)=4,
可能的方案包括:
{1,2}, {1}
{1,2}, {2}
{1}, {1,2}
{2}, {1,2}
- G(4)=1,
唯一的方案:
{1,2}, {1,2}
其中 { } 表示空集合。
所以,答案为 G(0) + G(1) + G(2) + G(3) + G(4) = 16。
输入格式
第一行输入一个整数 t,表示测试用例的数量。
接下来的 t 行,每行输入三个整数 N, M, K,其中 N ≥ M ≥ K。
输出格式
输出共 t 行,每行包含一个整数,为对应测试用例的答案,对 10^9 + 7 取模。
说明/提示
1 ≤ t ≤ 100
1 ≤ M ≤ N ≤ 100000
0 ≤ K ≤ M
```
样例输入
3
2 2 2
4 3 1
3 1 1
样例输出
16
256
8
```
**本翻译由 AI 自动生成**