题解 | #求解立方根# 二分超时,牛顿法加速
求解立方根
https://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca?tpId=37&tqId=21330&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=3&judgeStatus=undefined&tags=&title=
# 二分超时 # def find_po(n): # left, right = 0, n # mid = (left + right)/2 # while abs(mid ** 3 - n) > 0.001: # if mid ** 3 < n: # left = mid # else: # right = mid # mid = (left + right)/2 # return mid # while True: # try: # n = float(input()) # print('%.1f'%find_po(n)) # except EOFError: # break def find_po(n): if n == 0: return 0.0 # 如果 n 是负数,调整搜索区间 left, right = (n, 0) if n < 0 else (0, n) # 使用牛顿法优化求解速度 mid = (left + right) / 2 while abs(mid ** 3 - n)>0.001: mid = mid - (mid ** 3 - n) / (3 * mid ** 2) return mid while True: try: n = float(input()) print("%.1f" % find_po(n)) except EOFError: break except ValueError: print("Invalid input. Please input a number.")