C++快速幂算法
什么是快速幂?
我们一般幂的运算
都是C++能存的下的范围内
但高级一点的幂的运算
比如 a , b < = 1 0 7 a,b<=10^7 a,b<=107
( a a a 为底数, b b b 为指数)
显然C++存不下
但肯定有取模的措施
也是可以做的
但当我们碰到一些奇奇怪怪的数据
比如: a , b < = 1 0 9 a,b<=10^9 a,b<=109
你:nimabibibibibi
这个时候我们如果通过不断循环指数取幂的话
显然时间会超限
(科普:正常编译器编译速度为 2 2 2 x 1 0 8 10^8 108 每秒)
那碰到这种问题
又该如何解决?
那就是快速幂算法!
快速幂的原理
如果我们单纯用一般的遍历指数的方式
那么我们算法的时间复杂度为:
O ( n ) O(n) O(n)
在这种算法无法通过的情况下
就需要考虑比这种算法时间复杂度更低的算法
那么有哪些算法时间复杂度更低呢?
比如:
O ( n ) O({\sqrt n}) O(