PTA基础编程题目集 之 Python解法(7-18)
7-18 二分法求多项式单根 (20分)
a3, a2, a1, a0 = map(float, input().split()) #这里的输入是float类型的!!!之前写的时候看了半天没看出来哪里错了
a, b = map(float, input().split())
def f(x):
val = a3 * x ** 3 + a2 * x ** 2 + a1 * x + a0
return val
flag = 1 # 标记
while b - a > 0.001:
# if f(a) == 0 or f(b) == 0:
# flag = 0
# print(f'{a if not a else b :.2f}')
# break
mid = (a + b) / 2
if f(mid) == 0:
flag = 0
print(f'{mid:.2f}')
break
elif f(mid) * f(a) > 0:
a = mid
else:
b = mid
if flag: # 区间长度小于阈值的情况下
print(f'{(a + b) / 2:.2f}')