题解 | #求解立方根#

求解立方根

http://www.nowcoder.com/practice/caf35ae421194a1090c22fe223357dca

a = float(input())

if a>0:
    isp = 1
else:
    isp = 0
a = abs(a) # 将输入转为正数,方便计算,前面已经记录了正负信息

def ares(amin,amax,a):
    ahalf = (amin+amax)/2
    if ahalf**3-a<0: # 二分法的中间值比立方根小
        if ((a-ahalf**3)/a)<0.001: # 输出要满足的条件
            if isp==1:
                print('{:.1f}'.format(ahalf))
            else:
                print('{:.1f}'.format(-ahalf))
        else:
            ares(ahalf,amax,a)
    
    elif ahalf**3-a>0: # 二分法的中间值比立方根大
        if ((ahalf**3-a)/(ahalf**3))<0.001:
            if isp==1:
                print('{:.1f}'.format(ahalf))
            else:
                print('{:.1f}'.format(-ahalf))
        else:
            ares(amin,ahalf,a)
    else:
        if isp==1:
            print('{:.1f}'.format(ahalf))
        else:
            print('{:.1f}'.format(-ahalf))

if a==1:
    if isp==1:
        print('{:.1f}'.format(a))
    else:
        print('{:.1f}'.format(-a))
elif a>1:
    ares(0,a,a)
else:
    ares(0,1,a) # 0-1之间的数的立方根要在(0,1)区间内找
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务