快速幂

快速幂

ll qpow(ll a,ll b,ll m){
    ll ans=1;
    ll k=a;
    while(b){
        if(b&1)ans=ans*k%m;
        k=k*k%m;
        b>>=1;
    }
    return ans;
}

快速乘

ll qmul(ll a,ll b,ll m){
    ll ans=0;
    ll k=a;
    ll f=1;//f是用来存负号的
    if(k<0){f=-1;k=-k;}
    if(b<0){f*=-1;b=-b;}
    while(b){
        if(b&1)
            ans=(ans+k)%m;
        k=(k+k)%m;
        b>>=1;
    }
    return ans*f;
}


猜你喜欢

转载自blog.csdn.net/adusts/article/details/80218762