CFCF1498C.Planar Reflections
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Gaurang 生活在一个神秘的宇宙中。他面对着 n 个连续的二维平面。他向这些平面发射了一个衰变年龄为 k 的粒子。
粒子可以直接穿过一个平面,然而,每个平面都会产生一个完全相同的粒子副本,该副本朝相反方向运动且衰变年龄为 k−1。如果粒子的衰变年龄等于 1,则不会产生副本。
例如,如果有两个平面,且发射了一个衰变年龄为 3 的粒子(向右运动),过程如下(这里 D(x) 表示一个衰变年龄为 x 的粒子):
- 第一个平面产生一个向左的 D(2),并让 D(3) 继续向右运动;
- 第二个平面产生一个向左的 D(2),并让 D(3) 继续向右运动;
- 第一个平面让 D(2) 继续向左运动,并产生一个向右的 D(1);
- 第二个平面让 D(1) 继续向右运动(D(1) 不会产生任何副本)。
最终,粒子的多重集 S 为 {D(3),D(2),D(2),D(1)}。(参见注释中的测试案例图示说明。)
当平面数量过大时,Gaurang 无法应对这种复杂情况。请帮助 Gaurang 在给定 n 和 k 的情况下,计算多重集 S 的大小。
由于多重集的大小可能非常大,你需要输出其对 109+7 取模的结果。
注意:粒子可以在平面之间来回运动而不会相互碰撞。
输入格式
输入的第一行包含测试用例的数量 t(1≤t≤100)。随后 t 行,每行包含两个整数 n 和 k(1≤n,k≤1000)。
此外,所有测试用例的 n 之和不超过 1000,所有测试用例的 k 之和不超过 1000。同一测试中的所有测试用例均不同。
输出格式
输出 t 个整数。第 i 个整数应为第 i 个测试用例的答案。
输入输出样例
输入#1
4 2 3 2 2 3 1 1 3
输出#1
4 3 1 2
输入#2
3 1 1 1 500 500 250
输出#2
1 2 257950823
说明/提示
让我们解释第一个样例中的四个测试用例。
测试用例 1:(n=2,k=3)已在题目描述中解释。
参见下图模拟过程。每条不同颜色的直线代表不同粒子的路径。可以看到,多重集中共有四个不同的粒子。注意,反射粒子之间的垂直间距仅用于视觉清晰(如前所述,任何两个不同的粒子都不会相互碰撞)。

测试用例 2:(n=2,k=2)解释如下:
- 第一个平面产生一个向左的 D(1),并让 D(2) 继续向右运动;
- 第二个平面产生一个向左的 D(1),并让 D(2) 继续向右运动;
- 第一个平面让 D(1) 继续向左运动(D(1) 不会产生任何副本)。
最终的多重集 {D(1),D(1),D(2)} 的大小为三。
测试用例 3:(n=3,k=1),有三个平面,但衰变年龄仅为 1。因此粒子穿过平面时不会产生新副本。因此,答案为 1。
测试用例 4:(n=1,k=3)只有一个平面。粒子产生一个向左的新副本。多重集 {D(2),D(3)} 的大小为 2。