快(gui)速乘

有的时候,普通的乘法然后取模,在乘的过程中会爆 long long,所以我们需要使用快速乘

有一种基于快速幂的算法的快速乘,复杂度(logn)

inline ll quick_mul(ll a,ll n,ll mo){
    ll ans=0;
    while(n){
        if(n&1) ans=(ans+a)%mo;
        a=(a<<1)%mo;
        n>>=1;
    }
    return ans;
}

还有一种O(1)的方法

inline ll quick_mul(ll a,ll n,ll mo){
    ll ans=0;
    while(n){
        if(n&1) ans=(ans+a)%mo;
        a=(a<<1)%mo;
        n>>=1;
    }
    return ans;
}

猜你喜欢

转载自blog.csdn.net/weixin_43464026/article/details/87624305