若P为质数,则对于任意整数1<=m<=n,有:
C (n,m) = C (n%p, m%p) • C (n/p, m/p) (mod p)
相当于把n, m表示成p进制数,对P进制每一位计算组合数再相乘
时间复杂度:O()
ll ksm(ll a,ll b){...}
ll C(ll n,ll m)
{
if(m>n) return 0;
ll a=1,b=1;
if(m>n-m) m=n-m;//C(n,m)=C(n,n-m)
for(int i=1;i<=m;++i){
a=a*(n-i)%mod;//(n!/(n-m)!)%mod
b=b*i%mod;//(m!)%mod
}
return a*ksm(b,mod-2)%mod;//费马小定理
}
ll lucas(ll n,ll m)
{return !m||n==m?1:C(n%mod,m%mod)*lucas(n/mod,m/mod)%mod;}