二分快速幂记录

学习了二分思想

不难想到应用它来进行幂的快速运算


 

首先要有一些理论基础

  a4=(a22(上过初中的都知道吧……)



现在可以快乐的开始了

本人采用的是嵌套的方法

首先要考虑几种情况

1. 指数为1

  这种情况下直接return 底数就可

2. 指数为偶数

  这种情况return (底数指数/22

3. 指数为奇数

  这种情况return (底数指数/22 * 底数

说了这些,上代码


#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;
}

(并没经过优化)

 

posted @ 2021-03-31 21:44  Cap1taL  阅读(44)  评论(0)    收藏  举报