快速幂运算
快速幂运算利用位运算大大节省了运算时间,举个例子,5^11,11的二进制为1011,5^11就变成了5^(2^3)*5^(2^1)*5^(2^0);不难看出1011上从高位到低位分别对应着5的8次幂,5的4次幂,5的2次幂,5;直接上代码吧!
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int poww(long long int a,long long int b)
{
long long int ans=1,base=a;
while(b!=0)
{
if(b&1)//判断b的最低位是零还是一,是一就要进行运算。
ans=ans*base;
base=base*base;
b=b>>1;
}
return ans;
}
int main()
{
long long int a,b;
while(cin>>a>>b)
{
long long int t=poww(a,b);
cout<<t<<endl;
}
return 0;
}

浙公网安备 33010602011771号