快速乘

概念

  • 与快速幂差不多
  • 都是通过转换二进制乘法

举例:
2x3 = 6 =>
\(2^{\left(11\right)_2}=2^{2^1\times1}+2^{2^0\times1}\)

时间复杂度

\(O(logN)\)

以前为\(O(N)\)

代码

typedef long long ll;
int fast_multiplication(int a,int b,int mod){
    int ans = 0;
    while(b){
        if(b&1){
            ans = (ll) (ans+a)%mod;
        }
        b>>=1;
        a = (ll)a*2%mod;

    }
    return ans;
}
posted @ 2022-10-30 21:49  壹剑霜寒十四州  阅读(16)  评论(0编辑  收藏  举报