前言
其实我就是想说说废话…刚学C语言两个月的时候我自己把快速幂用非递归的形式写出来了… 当时还不知道什么是快速幂…年轻真好T^T
为什么要学快速幂
我们在求形如 a b a^{b} ab的值时有很多选择~
可以枚举,也可以用math里面的pow函数,也可以log换底(啊这个太难了我后面再填坑T^T)
按照朴素算法就是把a连乘b次,时间复杂度是 O ( b ) O(b) O(b)太慢了,如果b很大(如1e18)的话程序运行时间肯定会超过1秒进而…TLE
但是pow函数返回的是double类型,会有误差,并且速度慢。
既然这是个简单但是看似耗时长的问题,所以,我们要学快速幂,快速的求幂…
快速幂算法核心思想
假设我们要求 a b a^b