学习了二分思想
不难想到应用它来进行幂的快速运算
首先要有一些理论基础
a4=(a2)2(上过初中的都知道吧……)
现在可以快乐的开始了
本人采用的是嵌套的方法
首先要考虑几种情况
1. 指数为1
这种情况下直接return 底数就可
2. 指数为偶数
这种情况return (底数指数/2)2
3. 指数为奇数
这种情况return (底数指数/2)2 * 底数
说了这些,上代码
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <iomanip>
using namespace std;
long long ksm(int a,int b)
{
	  if(b==1)
	  {
		    return a;
	  }
	  if(b%2==0)
	  {
		    return ksm(a,b/2)*ksm(a,b/2);
	  }
	  else
	  {
		    if(b%2==1)
		    {
			      return ksm(a,b/2)*ksm(a,b/2)*a;
		    }
	  }
}
int main()
{
	  long long a,b;
	  cin>>a>>b;
	  cout<<ksm(a,b);
	  return 0;
}
(并没经过优化)
原文:https://www.cnblogs.com/XY-XHZS/p/14603946.html