组合数


void get_C()
{
    for(int i=1;i<=2005;i++)
    {
        C[0][i]=C[i][i]=1;
        for(int j=1;j<i;j++)
        {
            C[j][i]=(C[j-1][i-1]+C[j][i-1])%MOD;
        }
    }
}

 

 

 组合数,虎爷版

int f[10000+10];LL pf[10000+10];
LL qmod(LL a, LL b)
{
    if (b == 0) return 1;
    LL r = a % MOD;
    LL k = 1;
    while (b > 1){
        if ((b & 1)!=0)
            k = (k * r) % MOD;
        r = (r * r) % MOD;
        b >>= 1;
    }
    return (r * k) % MOD;
}
void init(){
    f[0]=1;
    for(int i=1;i<=maxn;i++){
        f[i]=(long long)f[i-1]*i%MOD;
        pf[i]=qmod(f[i],MOD-2);
    }
}

int C(int n,int m){
    if(n==m||m==0)return 1;
    return ((long long)f[n]*qmod(f[m],MOD-2)%MOD)*qmod(f[n-m],MOD-2)%MOD;
}

 

posted @ 2017-10-28 11:02  啦啦啦天啦噜  阅读(161)  评论(0编辑  收藏  举报