快速幂简述

  通常快速求a^b (常常还会要求取模,这样的话只要边乘边模即可)时,我们一般将指数b转换成二进制,然后从低位到高位“扫描”,并维护一个代表该位权值的伴随变量。根据该位是否为1来决定是否给维护的答案变量乘上该位的权值。只要扫描log2 n位,扫描每位时只做常数次以内的运算(伴随变量、答案变量的更新,指数位的移动),故复杂度为logb。

   

 1 #define ll long long
 2 ll Pow( ll a,ll b,ll mod )
 3 {
 4     ll ans = 1,w = a;
 5     while( b >= 0 )
 6     {
 7         if(b & 1)
 8           ans = ans * w % mod;
 9         w = w * w % mod;b >>= 1;            //看下一位
10     }
11     return ans;
12 }
二进制快速幂函数

相关文章:

  • 2021-12-03
  • 2021-08-28
  • 2021-09-11
  • 2022-12-23
  • 2022-12-23
  • 2021-05-28
  • 2021-06-14
猜你喜欢
  • 2022-12-23
  • 2022-02-14
  • 2021-06-03
  • 2022-12-23
  • 2021-12-03
  • 2021-12-05
  • 2022-12-23
相关资源
相似解决方案