快速幂运算

快速幂运算利用位运算大大节省了运算时间,举个例子,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;
}

posted @ 2018-07-30 20:45  hum0r0  阅读(4)  评论(0)    收藏  举报