快速幂

​
long long int lpl(long long a,long long k)//指数较大可用long

{

   long long int sum=1;
   while(k)
{
   if(k%2!=0)//判断是否转为二进制时此数是不是1;如6的二进制数是110=2^2x1+2^1x1+2^0x0.
{
sum*=a;//我们要计算的就是2的6次,那么就是2^6=2^4x2^2,所以当二进制数是0时不计入
}
a*=a;//每次乘上自身相当于指数每次加2,如第一次是2^2,第二次是4x4相当于2^4.这两次都参与进了sum。
k/=2;
}
return sum;所以最终sum=1x2^2x2^4;
}

    

​

以a=2,k=6,为例。 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值