用三种方法求幂值

一. 暴力递归

直接对x乘y次

int result(int x,int y)
{int num=1;for (int i=1; i<=y; i++) {num*=x;}return num;
}

这种方法有手就行,但是运行时间往往过长

二. 快速幂

主要利用递归,它的思想类似于分治,把大问题分割为小问题,再将小问题的结果合计为大问题的解
t4=t2+t2t^{4}=t^{2}+t^{2} t4=t2+t2
所以我们可以对幂指数进行不断的二分,达到降低时间复杂度的效果

int result(int x,int y)
{if(y==0)return 1;if(y==1)return x;int t=result(x, y/2)*result(x, y/2);if(y%2==0)return t;else return t*x;
}

当幂指数y为奇数时,还要乘一次自身

三 .二进制求幂

假设指数为7,可写为
7=22+21+20其二进制形式为111,且每一位都等于前一位的平方7=2^{2}+2^{1}+2^{0} 其二进制形式为111,且每一位都等于前一位的平方 7=22+21+20其二进制形式为111,且每一位都等于前一位的平方

long long qpow(int base,int p){long long ans=1,tmp=base;//从底数开始乘,不停自乘while(p!=0){//指数不是0if(p&1){ans=(ans*tmp);}tmp=(tmp*tmp);//自乘p=p>>1;//访问下一位}return ans;
}

再此方法下,时间复杂度最低

希望大家三连关注,嘻嘻,我会继续更新c语言和python方面的文章,希望大家多多支持。

C语言求幂的三种方法相关推荐

  1. C语言求最大公约数三种方法详解

    C语言求最大公约数三种方法详解 题目要求 常用写法(穷举法) 辗转相减法 辗转相除法 main函数 整体代码 题目要求 运行最大公约数的常用算法,并进行程序的调式与测试. 常用写法(穷举法) 从两个数 ...

  2. c语言程序π,C语言求圆周率π(三种方法)

    题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 题目2) 根据公式②,用前100项之积计算π的值. 题目1)提供了一种解法,题目2)提供了两种解法,请看解析. 题目1) ...

  3. c语言求圆周率 . 4,C语言求圆周率π(三种方法)(4页)-原创力文档

    C语言求圆周率π(三种方法) 题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止.题目2) 根据公式②,用前100项之积计算π的值.题目1)提供了一种解法,题目2)提供了两种 ...

  4. C语言求最小公倍数的三种方法

    第一种方法:累加法求 思路是,两个数字,要求他们的最小公倍数,那么这个最小公倍数,至少不要比这两个要求的数小.我们首先判断出两个数中较大的一个,然后判断这个数是否是要求的两个数的最小公倍数.如果不是, ...

  5. 用c语言编写的求圆周率的程序,【C语言程序设计】C语言求圆周率π(三种方法)...

    题目一: 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 程序代码: #include #include#include intmain(){float s=1;float pi ...

  6. 求派c语言程序,C语言求圆周率π(三种方法)

    题目1) 利用公式①计求π的近似值,要求累加到最后一项小于10^(-6)为止. 题目2) 根据公式②,用前100项之积计算π的值. 题目1)提供了一种解法,题目2)提供了两种解法,请看解析. 题目1) ...

  7. 求最小公倍数的三种方法(C语言)

    求最小公倍数的三种方法 1.常规暴力求解法 2.辗转相除法 3.迭乘法 //1.常规暴力求解法 #include <stdio.h> int main() {int a = 0;int b ...

  8. C语言求最大公约数3种方法

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105163610 C ...

  9. java中隐函数求导法则_隐函数求导的三种方法

    this.p={ m:2, b:2, loftPermalink:'', id:'fks_085075084086088070081083074065081087082066093087080', b ...

最新文章

  1. 深入理解PHP原理之Opcodes
  2. Machine Learning机器学习公开课汇总
  3. python设计模式整理
  4. 【Python金融量化 2- 100 】股票量化分析基本知识
  5. mysql三学习sql声明学习
  6. target tile component.js load logic
  7. Oracle 11g DG主库节点2 ORA-00245: control file backup fail
  8. JSP分页技术的实现(利用当前页进行前后加减,并利用href进行当前页面传值,传值当然是那个当前值变量)...
  9. safari的一些问题
  10. 职业玩家手速测试软件,游戏界手速最快的人,APM近千,Faker都自愧不如
  11. 复权、前复权和后复权
  12. AC_PosControl.cpp的AC_PosControl::set_alt_target_with_slew函数代码分析
  13. 竟然可以用python炒股?
  14. 基于人脸识别的web展示
  15. Uber中国获10亿美元融资,路演PPT曝光!
  16. 湖北省2019.3全国计算机等级考试,湖北2019年3月全国计算机等级考试报名系统
  17. REW声学测试(四):REW的测试原理
  18. 成都普陀计算机学校,成都智慧校园软件
  19. opencv读取黑白图片生成凹凸效果图
  20. WinXpSp3升级后不能访问 codeproject 站点的问题

热门文章

  1. python 处理异常
  2. JVM总结之垃圾回收
  3. 如何画双层pcb板_双层pcb板布线规则(操作技巧与案例分析)
  4. Apache Camel 了解一下?
  5. tensorflow 常遇函数
  6. python3解两数之和
  7. 学习率衰减之余弦退火(CosineAnnealing)
  8. JEECG 新手常见问题大全,入门必读
  9. sed删除代码空行和删去行尾空白
  10. android 四大组件Broadcast Receiver