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

快速幂及例题

时间:2019-10-19 11:17:21      阅读:73      评论:0      收藏:0      [点我收藏+]

标签:实现   code   quic   二进制   sig   拆分   long   c++   快速幂   

快速幂:

例:a^11=a^(2^0)*a^(2^1)*a^(2^3)

 

 11的二进制是1011,有1为第一位,第二位,第四位,它们的权分别为0,1,3。所以可以把11拆分为2^0+2^1+2^3。

利用这个思想实现快速幂函数(c++) ULL代表unsigned long long 

ULL quickpow(ULL a,ULL b){
    ULL res=1;
    for(;b;b>>=1){
        if(b&1)
            res*=a;
        a*=a;
    }
    return res;
}

 

快速幂及例题

标签:实现   code   quic   二进制   sig   拆分   long   c++   快速幂   

原文地址:https://www.cnblogs.com/FrankYu-/p/11703211.html

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