求组合数 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;
}

posted @ 2022-07-13 20:03  lucky_light  阅读(58)  评论(0编辑  收藏  举报