基本组合数
Posted zero_orez6
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基本组合数相关的知识,希望对你有一定的参考价值。
组合数模板
C n m = C n − 1 m − 1 + C n m − 1 = n ! m ! ∗ ( n − m ) ! C_n^m=C_{n-1}^{m - 1}+C_n^{m - 1}=\\frac{n!}{m!*(n-m)!} Cnm=Cn−1m−1+Cnm−1=m!∗(n−m)!n!
#include<bits/stdc++.h>
#define LL long long
using namespace std;
const int mod=1e9+7;
const int MAXN=200000;
LL fact[MAXN],inv[MAXN],factinv[MAXN];
LL C(LL n,LL m)
{
return fact[n]*factinv[m]%mod*factinv[n-m]%mod;
}
int main()
{
LL n,m;
fact[0]=inv[0]=factinv[0]=1;
fact[1]=inv[1]=factinv[1]=1;
for(int i=2;i<MAXN;i++)
{
fact[i]=(fact[i-1]%mod*i%mod)%mod;
inv[i]=(mod-mod/i)*inv[mod%i]%mod;
factinv[i]=factinv[i-1]*inv[i]%mod;
}
cin>>n>>m;
cout<<C(n,m)<<endl;
return 0;
}
以上是关于基本组合数的主要内容,如果未能解决你的问题,请参考以下文章