前言
大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂!
快速幂是什么?
顾名思义,快速幂就是快速算底数的n次幂。你可能疑问,求n次幂算n次叠乘不就行了?当n巨大无比时候,如果需要末尾有效尾数值等信息这个可能超出计算机运算范围。
有多快?
快速幂时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高(int 范围10位长度数字32次之内就能搞定,long 范围20位长度数字64次之内也能搞定,你看有多快)。
用的多么?
快速幂属于数论的范畴,本是ACM经典算法,但现在各厂对算法的要求越来越高,并且快速幂适用场景也比较低多并且相比朴素方法有了非常大的提高,所以掌握快速幂算法已经是一名更合格的工程师必备要求!
下面来详细看看快速幂算法吧!
快速幂介绍
先看个问题再说:
初探
首先问你一个问题,如果让你求 (2^10)%1000你可能会这样写:
<