快速幂算法

1.什么是快速幂算法

    快速幂算法如其名,是用来快速计算某个数的幂次结果的算法,比如66的666666次方,算法复杂度为O(log_{2}n).

2.快速幂算法实现思路

    快速幂的实现核心在于一个公式x^{a+b}=x^{a}*x^{b },故而可以快速的减小幂次.实际算法中多为取a,b为2的幂次数,故而指数是被分为了log_{2}n个,比如2^{11}=2^{1}*2^{2}*2^{8}(11的二进制位中对应的这几位就是1)故而算法复杂度为O(log_{2}n),而2的幂次数随着运算过程叠加出来就好.实际运用中由于结果过大往往要对结果取余数,这里不断对运算的每个中间结果取余即可,不会影响最终结果,可以从数学推出无影响

3.快速幂模版代码

ll fastpower(ll a,ll b,ll mod)//计算(a^b)%mod 
{    
    ll ans=1;
    ll powerofa=a;     
    while(b){
       if(b&1) ans=ans*powerofa%mod;//一种位运算 
       powerofa=powerofa*powerofa%mod;     
       b>>=1;
    }
    return ans;     
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值