存一波模板:
//组合数求余,lucas定理
ll fac[N]; //阶乘
ll C(ll n,ll k,ll mod)
{
if(n<k||n<0||k<0)
return 0;
return fac[n]*pow_mod(fac[n-k]*fac[k]%mod,mod-2,mod)%mod;
}
ll lucas(ll a,ll b,ll mod)
{
if(b==0) return 1;
return lucas(a/mod,b/mod,mod)*C(a%mod,b%mod,mod)%mod;
}
void init(ll mod)
{
fac[0]=fac[1]=1;
for(int i=2;i<=mod;i++)
fac[i]=fac[i-1]*i%mod;
}