快速幂
def quickly_power(a,n):
if n == 0:
return 1
if a == 0:
return 0
res = 1
flage = 1
tmp = a
if n < 0:
n = -n
flage = 0
while n>0:
if n % 2 == 1:
res *= tmp
n //= 2
tmp *= tmp
return res if flage else 1/res
牛顿法开根
def sqrt(n):
s = n + 1
q = n
while abs(s-q) > 0.00001: # 精确到小数点后5位
s = q
q = q/2 + n/(2*q)
return q
全排列(回溯法)
def full_arr(s:list):
res = []
def bfs(first = 0):
if first == len(s):
res.append(s[:])
for i in range(first,len(s)):
s[first],s[i] = s[i],s[first]
bfs(first+1)
s[first],s[i] = s[i],s[first]
bfs()
return res