求组合数

const int maxn=2e5+10;
ll fac[maxn],inv[maxn];
void init()
{
    fac[0]=1;
    for(int i = 1; i <= maxn-10; ++i) fac[i]=fac[i-1]*i%mod;
    inv[maxn-10]=powmod(fac[maxn-10],mod-2);
    for(int i = maxn-11; i >= 0; --i) inv[i]=inv[i+1]*(i+1)%mod;
}
ll C(int x,int y)
{
    return fac[x]*inv[y]%mod*inv[x-y]%mod;
}

你可能感兴趣的:(算法-一)