leetcode系列题七----快速幂
50 Pow(x, n)
372 超级次方
由于暴力是O(n)的复杂度,通过快速幂的方法可以把复杂的降为O(logn)
快速幂实际上是分治思想的一种应用。
偶数:
x
n
=
x
2
(
n
/
/
2
)
x_n =x^{2(n//2)}
xn=x2(n//2)
奇数:
x
n
=
x
x
2
(
n
/
/
2
)
x_n = x x^{2(n//2)}
xn=xx2(n//2)
def pow(x,n):
if x ==0: return 0
if n<0: x,n = 1/x, -n
res = 1
while n!=0:
if n&1: res *= x
x *=x
n = n>>1
return res