卢卡斯
先给一份洛谷模板题的代码
ll qpow(ll a,ll b)
{
ll ans=1;
while(b)
{
if(b&1)ans=(ans*a)%mod;
a=(a*a)%mod;
b>>=1;
}
return ans;
}
ll getc(ll a,ll b)
{
if(a<b)return 0;
if(b>a-b)b=a-b;
ll s1=1,s2=1;
for(ll i=0;i<b;i++)
{
s1=s1*(a-i)%mod;
s2=s2*(i+1)%mod;
}
return s1*qpow(s2,mod-2)%mod;
}
ll lucas(ll n,ll k)
{
if(k==0)return 1;
return getc(n%mod,k%mod)*lucas(n/mod,k/mod)%mod;
}