求组合数 I
C++
求组合数 I
/*
题目描述:
给定 n 组询问,每组询问给定两个整数 a,b,请你输出 Cbamod(109+7) 的值。
输入格式:
第一行包含整数 n。
接下来 n 行,每行包含一组 a 和 b。
输出格式:
共 n 行,每行输出一个询问的解。
数据范围:
1 ≤ n ≤ 10000,
1 ≤ b ≤ a ≤ 2000
解题思路:
无论从组合数的定义或者是从组合数的数学公式,都可以得到
C(a, b) = C(a-1, b-1) + C(a-1, b)
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int N = 2010, MOD = 1e9 + 7;
int f[N][N];
int n;
int main()
{
memset(f, 0, sizeof f);
f[0][0] = 1;
for (int i = 1; i < N - 5; i ++ ) {
f[i][0] = 1;
for (int j = 1; j <= i; j ++ ) {
f[i][j] = (f[i-1][j] + f[i-1][j-1]) % MOD;
}
}
scanf("%d", &n);
int a, b;
while (n -- ) {
scanf("%d%d", &a, &b);
printf("%d\n", f[a][b]);
}
return 0;
}