题目描述
有形如:
ax3+bx2+cx1+dx0=0ax^3+bx^2+cx^1+dx^0=0
这样的一个一元三次方程。给出该方程中各项的系数(
a,b,c,da,b,c,d
a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在
−100-100
−100至
100100
100之间),且根与根之差的绝对值
≥1 \ge 1
≥1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后
22
2位。
提示:记方程
f(x)=0f(x)=0
f(x)=0,若存在2个数
f(x1)×f(x2)<0f(x_1) \times f(x_2)<0
f(x)×f(x)<0,则在
(x1,x2)(x_1,x_2)(x,x)之间一定有一个根。
输入输出格式
输入格式:
一行,
4个实数
A,B,C,DA,B,C,D
A,B,C,D。
输出格式:
一行,
3个实根,并精确到小数点后2位。
看到dalao们都是用二分,其实可以直接枚举解。
var i,j,k:longint;
m,n:longint;
a,b,c,d:real;
x,y:real;
begin
read(a,b,c,d);
for i:=-100000 to 100000 do
begin
x:=i/1000; //解
if abs(a*x*x*x+b*x*x+c*x+d)<0.0001 {判断误差} then write(x:0:2,' ');//当为解时输出
end;
end.