快速幂
2019-05-29 本文已影响0人
八菜冰
,将n表示成2的幂次和,即
而求时,只需求
换句话说就是将n转为二进制,例如5转为101,而101就代表,当c为0时,为1,因此,我们只考虑c不为0的项,即求出所有c,当c不为0时,求。
步骤:
对a逐次平方(由解式可以看出,乘式中每一项因子都是a的逐次平方),同时我们还需要确认c参数,即n式对2求余,确认,再除以2,并向下取整,从而消去,并使多项式的次数下降1,且暴露出;重复进行,直至n式除以2为0,即除尽。
def myPow(self, a, n):
# write your code here
ans = 1
if n == 0:
return 1
if n<0:
a = 1/a
n = -n
while n!=0:
if n%2 == 1:
ans *= a
a *= a
n = int(n/2)
return ans
解释的比较乱。。也比较数学