博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速幂(递归)
阅读量:4049 次
发布时间:2019-05-25

本文共 538 字,大约阅读时间需要 1 分钟。

自己写了一个快速幂,不过只能解决整数次幂的,貌似没bug,时间复杂度为logn。

思路:
ab,b总的有3种情况:
1.b=0,ab=1;
2.b=1,ab=a;
3.b>1:
A.b为偶数,则ab=(a2)b/2=((a2)2)b/2/2=…,直到指数为1;
B.b为奇数,则ab=a·ab-1=a·(a2)(b-1)/2重复A,B操作,直到指数为1。
代码如下:

#include
using namespace std;long long quick_pow(long long x,long long y){ if(y==1) return x; if(y==0) return 1; //1,2两种情况的代码一定要放在第3种情况之前 if(y%2==0) return quick_pow(x*x,y/2); if(y%2!=0) return x*quick_pow(x*x,y/2);}int main(){ long long x,y; long long ans; while(1){ scanf("%lld %lld",&x,&y); ans=quick_pow(x,y); printf("%lld\n",ans);} return 0;}

转载地址:http://kfdci.baihongyu.com/

你可能感兴趣的文章
二叉树的非递归遍历
查看>>
【leetcode】Reorder List (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>