求组合数(笔记)

cpp 复制代码
//组合数2,取值在1e5
//Cab = a! / (a - b)! * b!
#include<iostream>
using namespace std;
using ll = long long;
const ll N = 1e4 + 9, mod = 1e9 + 7;
ll fact[N], infact[N];//阶乘,逆元阶乘

ll qmi(ll a, ll k, ll p)//逆元模板
{
	ll res = 1;

	while (k)
	{
		if (k & 1) res = res * a % p;
		a = a * a % p;
		k >>= 1;
	}
	return res;
}

int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	fact[0] = infact[0] = 1;
    //初始化数组
	for (ll i = 1; i < N; ++i)
	{
		fact[i] = fact[i - 1] * i % mod;
		infact[i] = infact[i - 1] * qmi(i, mod - 2, mod) % mod;
	}

	int n; cin >> n;

	while (n--)
	{
		int a, b; cin >> a >> b;
        //多取模的原因是防止超出long long的数据范围
		cout << fact[a] * infact[a - b] % mod * infact[b] % mod << '\n';
	}
	return 0;
}
相关推荐
别动我齐刘海几秒前
实时控制学习2
linux·c++·人工智能·学习·算法
有Li9 分钟前
EEG脑电图数据处理基础
人工智能·算法·机器学习·语言模型·医学生
XMXFS21 分钟前
小红书推荐算法底层逻辑解析:用数据思维做内容优化
python·算法·新媒体运营·推荐算法
AI视觉网奇26 分钟前
3Dconnexion 按照笔记
笔记
0+11127 分钟前
算法 --栈
算法·leetcode
鶴哥只手遮天31 分钟前
Gmsh 源码深度解析-第 2 章 几何内核
算法·开源
海海不掉头发31 分钟前
软件开发方法第七周笔记_CSDN博客
人工智能·笔记·学习·软件工程
鶴哥只手遮天36 分钟前
Gmsh 源码深度解析-第 9 章 后处理与插件体系
算法·开源
鶴哥只手遮天39 分钟前
Gmsh 源码深度解析-第 7 章 网格质量、优化与高级技术
算法·开源
鶴哥只手遮天44 分钟前
OpenFOAM 源码深度剖析 · 第二季-15 实战:手写一个求解器、库与边界条件
算法·开源