标签:优化 cst 运算 int long 不难 代码 奇数 二分
学习了二分思想
不难想到应用它来进行幂的快速运算
首先要有一些理论基础
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;
}
(并没经过优化)
标签:优化 cst 运算 int long 不难 代码 奇数 二分
原文地址:https://www.cnblogs.com/XY-XHZS/p/14603946.html