码迷,mamicode.com
首页 > 其他好文 > 详细

快速幂运算模板

时间:2019-04-12 13:28:38      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:判断   mod   pre   pow   二进制   while   ==   缩小   扩大   

ll pow(ll a,ll b)    //long long型
{
  ll ans=1;
  while(b!=0)
  {
    if(b%2==1)  //if(b&1)
      ans=ans*a%mod;//如果是奇数次幂,因为b下面是除以2操作,会少一次乘,这里要提前乘上去。 
    a=a*a%mod;//快速幂,每一次是上一次的平方倍 
    b=b/2;
  }
  return ans;
}

 

分析:

  将指数b看成二进制,b%2==1即判断当前b二进制最低位是否为1,是则将当前底数a与累积ans相乘,否则跳过。在每次循环中都将底数a扩大一倍,将指数b缩小一半。其中mod是针对幂运算求模。

快速幂运算模板

标签:判断   mod   pre   pow   二进制   while   ==   缩小   扩大   

原文地址:https://www.cnblogs.com/ShadowCharle/p/10695337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!