描述
计算一个浮点数的立方根,不使用库函数。
保留一位小数。
数据范围:∣𝑣𝑎𝑙∣≤20 ∣val∣≤20
输入描述:
待求解参数,为double类型(一个实数)
输出描述:
输出参数的立方根。保留一位小数。
示例1
输入:
19.9
输出:
2.7
示例2
输入:
2.7
输出:
1.4
本题不允许用库函数,则可以通过反向求三次方的方法来解决,要注意输入数据的正负性,以及正负数各自的距离判定方法。
num=float(input())
if num>0:
frontnum=0.1
nextnum=0.2
for _ in range(30):
if frontnum**3>=num:
print(0.1)
break
else:
if nextnum**3<num:
frontnum+=0.1
nextnum+=0.1
continue
elif frontnum**3==num:
print(round(frontnum,1))
break
elif frontnum**3<num and nextnum**3>num:
if num-frontnum**3>nextnum**3-num:
print(round(nextnum,1))
break
else:
print(round(frontnum,1))
break
elif num==0:
print(0.0)
else:
frontnum=-0.1
nextnum=-0.2
for _ in range(30):
if frontnum**3<=num:
print(-0.1)
break
else:
if nextnum**3>num:
frontnum-=0.1
nextnum-=0.1
continue
elif frontnum**3==num:
print(round(frontnum,1))
break
elif frontnum**3>num and nextnum**3<num:
if frontnum**3-num>num-nextnum**3:
print(round(nextnum,1))
break
else:
print(round(frontnum,1))
break