卢卡斯

先给一份洛谷模板题的代码

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;
}
posted @ 2021-07-13 00:35  Paranoid5  阅读(76)  评论(0编辑  收藏  举报