定义

快速求a^b%c的算法

 

原理

指数可以被二进制分解

那么a^b可以分解为a^2^k1*a^2^k2*……

又显然a^2^(k+1)=a^(2^k*2)=(a^2^k)^2

所以可以将指数在二进制下从低位向高位递推,每次将底数平方,若该位是1就将答案乘上底数,直到指数为0。

实现时可以每次将指数/2方便处理

 

位运算优化

x&1:取x二进制下最后一位

x>>1:x/2

 

代码

int quickpow(int a,int b,const int c)
{
    int base=a%c,ans=1;
    while(b)
    {
        if(b&1)
            ans=ans*base%c;
        base=base*base%c;
        b>>=1;
    }
    return ans;
}
快速幂

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2021-12-05
  • 2022-12-23
  • 2021-12-03
  • 2021-08-28
  • 2021-09-11
猜你喜欢
  • 2021-07-09
  • 2022-01-04
  • 2022-12-23
  • 2021-11-19
  • 2022-02-28
  • 2022-01-27
  • 2021-05-18
相关资源
相似解决方案