题目:
给定 n 组询问,每组询问给定两个整数 a,b,请你输出 组合数Cab mod(10^9+7) 的值。
输入格式
第一行包含整数 n。
接下来 n 行,每行包含一组 a 和 b。
输出格式
共 n 行,每行输出一个询问的解。
数据范围
1≤n≤10000,
1≤b≤a≤2000
输入样例:
3
3 1
5 3
2 2
输出样例:
3
10
1
思想:
没有用到什么思想,主要是用到了一个递推式:Cab = C(a - 1)b + C(a - 1)(b - 1)
代码如下:
#include<iostream>
using namespace std;
const int N = 2005, p = 1e9 + 7;
int c[N][N];
void init()
{
for(int i = 0; i <= 2000; i ++) c[i][0] = 1;
for(int i = 1; i <= 2000; i ++){
for(int j = 1; j <= 2000; j ++){
c[i][j] = (c[i - 1][j] % p + c[i - 1][j - 1] % p) % p;
}
}
}
int main()
{
init();
int n;
cin >> n;
while(n --){
int a, b;
cin >> a >> b;
cout << c[a][b] << endl;
}
}