#include<bits/stdc++.h>
using namespace std;
map<double,int> vis;
double a,b,c,d;
double x[4];
double f1,f2;
double check(double num)
{
double sum = 0;
sum = a * num * num * num + b * num * num + c * num + d;
return sum;
}
int main()
{
cin >> a >> b >> c >> d;
double left = -100.00;double right = 100.00;
double x1 = -100.00,x2 = 100.00;
for(int i = 0;i<3;i++)
{
while(left < right)
{
if(x1 < x2 && f1 * f2 < 0)
{
left = x1;
right = x2;
}
double midium = (left + right)/2.00;
double a = (int)((check(midium)*1000+5)/10) / 100.0;
cout << midium << " " << a << '\n';
if(a < 0)
{
x1 = midium;
f1 = a;
left = midium + 0.001;
}
else if(a > 0)
{
x2 = midium;
f2 = a;
right = midium - 0.001;
}
else if(a == 0 && vis[midium] == 0)
{
x[i] = midium;
vis[midium] = 1;
// printf("%.2lf ",midium);
break;
}
else
{
if(i == 1)
{
x1 = midium + 1;x2 = 100;
}
if(i == 2)
{
left = x[0] + 1;right = x[1]-1;
x1 = left;x2 = right;
}
}
}
}
sort(x,x+3);
for(int i = 0;i<3;i++)
{
printf("%.2lf ",x[i]);
}
return 0;
}
我已经找了一下午了