求组合数 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 @   lucky_light  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示