Lucas定理模板

来源:互联网 发布:彩票号码组合软件 编辑:程序博客网 时间:2024/05/23 18:32

输入p时,预处理所有n!的模p的余数,即调用init(p);

LL f[maxn];void init(LL p){    LL i;    f[0]=1;    for(i=1;i<=p;i++){        f[i]=f[i-1]*i%p;    }}LL powmod(LL a,LL b,LL p) {    LL res=1;    while(b!=0){        if(b&1) res=(res*a)%p;        a=(a*a)%p;        b>>=1;    }    return     res;}LL Lucas(LL n,LL m,LL p){    LL ans=1;    while(n&&m){        LL nn=n%p,mm=m%p;        if(nn<mm) return 0;        ans=ans*f[nn]*powmod(f[mm]*f[nn-mm]%p,p-2,p)%p;        n/=p;        m/=p;    }    return ans;}


0 0
原创粉丝点击