首页 > 其他 > 详细

二分快速幂记录

时间:2021-04-01 00:55:06      阅读:19      评论:0      收藏:0      [点我收藏+]

学习了二分思想

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


 

首先要有一些理论基础

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

(并没经过优化)

 

二分快速幂记录

原文:https://www.cnblogs.com/XY-XHZS/p/14603946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!