【数论定理】卢卡斯定理

库卡斯模板:

/* Lucas定理:我们令n=sp+q , m=tp+r .(q ,r ≤p)
 * 那么:C(n,m)=C(s,t)*C(q,r)
 * 使用前要打出0~mod-1的阶乘表fac[]
 * 时间O(logp(n)*p)
 */
 const int mod=1000000007;
typedef long long ll;
ll fac[100018];
ll pow_m(ll a,ll n)
{
    ll res=1;
    while(n)
    {
        if(n%2) res*=a,res%=mod;
        a=a*a;
        a%=mod;
        n/=2;
    }
    return res;
}
ll inv(ll a,ll mod)
{
    return pow_m(a,mod-2);
}
ll C(ll n,ll m)
{
    if(n

 

你可能感兴趣的:(整理模板)