码迷,mamicode.com
首页 > 其他好文 > 详细

二分快速幂记录

时间:2021-04-01 13:20:51      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:优化   cst   运算   int   long   不难   代码   奇数   二分   

学习了二分思想

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


 

首先要有一些理论基础

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

(并没经过优化)

 

二分快速幂记录

标签:优化   cst   运算   int   long   不难   代码   奇数   二分   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!