求组合数(一)
概念:
Example
给定nn组询问,每组询问给定两个整数a,ba,b,请你输出Cba mod (109+7)Cab mod (109+7)的值。
输入格式
第一行包含整数nn。
接下来nn行,每行包含一组aa和bb。
输出格式
共nn行,每行输出一个询问的解。
数据范围
1≤n≤100001≤n≤10000,
1≤b≤a≤20001≤b≤a≤2000
输入样例:
3
3 1
5 3
2 2
输出样例:
3
10
1
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 2010, mod = 1e9 + 7;
int c[N][N];
//初始化
void init()
{
for (int i = 0; i < N; i ++)
for (int j = 0; j <= i; j ++)
if (!j) c[i][j] = 1;//如果是第一个数0,则标记1
else c[i][j] = (c[i - 1][j] + c[i - 1][j - 1]) % mod;//按照公式来
}
int main()
{
init();
int n;
scanf ("%d", &n);
while(n --)
{
int a, b;
scanf ("%d%d", &a, &b);
printf("%d\n", c[a][b]);
}
return 0;
}