题解 | #求解立方根# 二分超时,牛顿法加速

求解立方根

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.")

全部评论

相关推荐

09-05 02:50
已编辑
南京理工大学 Java
大拿老师:你只要把实验室项目放第一个,就应该有面试了 但是面试通过率应该不高 现在的问题很明确,就是你的简历主项目是一个烂大街的,而你的学历在大厂又是最差的 校招简历上只有这两个东西是不一样的,一个是学校,一个是主项目 你这两个目前都是最差的,大厂又是在笔试后,面试官谁简历的时候肯定过不了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务