题目
使用二分查找求k的1/n次幂。
示例
输入
1000 2
输出
31.6227766
注:保留小数点后七位
代码
a,b = 1000, 2
def binary_search(x,y):
if x < 0:
return -1
l = 0
r = x
ans = (l+r)/2.0
sign = ans
# 这里 相等的阈值是小数点后13位
# 1000.0000000000002
while ans**y != x:
if ans**y > x:
r = ans
else:
l = ans
ans = (l+r)/2.0
if ans == sign:
break
return ans
ans = binary_search(a,b)
ans = round(ans,7)
print(ans)