求组合数-费马小定理

  • Post author:
  • Post category:其他



//快速幂
LL powermod(LL a,LL n)
{
    if(a==0) return 1;
    LL ret=1,res=a;
    while(n)
    {
        if(n&1) ret=ret*res%mod;
        res=res*res%mod;
        n>>=1;
    }
    return ret;
}
LL fun(LL n,LL m)
{
    if(n>m/2) n=m-n;
    LL  ans=1,i=1;
    while(i<=n)
    {
        ans=ans*(m-i+1)%mod*powermod(i,mod-2)%mod;
        i++;
    }
    return ans;
}
/*
//还可以优化
LL c[1000]={1};
    for(int i=1;i<=n;i++) c[i]=(n-i+1)*powermod(i,mod-2)%mod*c[i-1]%mod;
*/


费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p),即:假如a是整数,p是质数,且a,p互质(即两者只有一个公约数1),那么a的(p-1)次方除以p的余数恒等于1。

C(m,n)=m!/(n!*(m-n)!), C(m,n-1)=m!/((n-1)!*(m-n+1)),

所以C(m,n)=(m-n+1)/n*C(m,n-1).

由费马小定理两边除以a,所以1/a=a^(p-2)(mod p).



版权声明:本文为blue_kid原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。