求组合数的几种方式

来源:互联网 发布:ubuntu 14 搜狗输入法 编辑:程序博客网 时间:2024/05/04 02:26

逆元求组合数

void init(){fac[0]=1;for(int i=1;i<maxn;i++){fac[i]=fac[i-1]*i%mod;}inv[1]=1;for(int i=2;i<maxn;i++){inv[i]=(mod-mod/i)*inv[mod%i]%mod;}inv[0]=1;for(int i=1;i<maxn;i++){inv[i]=inv[i-1]*inv[i]%mod;}}ll C(ll a,ll b){return fac[a]*inv[b]%mod*inv[a-b]%mod;}