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,为例。
20万+

被折叠的 条评论
为什么被折叠?



