快速幂模板

思路:二分+位运算

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int power(int a,int b)
{
	int r=1,base=a;//r存结果,base存每一次运算的乘积 
	while(b!=0)
	{
		if (b&1) r*=base;//幂数二进制的最后一位如果为1则与base相乘 
		base*=base;//每次相乘完后base要乘一次 
		b>>=1;//幂数右移一位 
	}
	return r;
}
int main ()
{
	int n,m;
	cin>>n>>m;
	cout<<power(n,m);
	return 0;
}


posted @ 2016-11-01 20:01  2000xyy  阅读(81)  评论(0编辑  收藏  举报