题目:http://www.luogu.org/problem/show?pid=1024#
分析:二分
代码:
#include <cstdio>
#include <algorithm>
using namespace std;
double a,b,c,d;
double f(double x)
{
return a*x*x*x+b*x*x+c*x+d;
}
void work(double l,double r)
{
double mid;
while(r-l>=0.0001)
{
mid=l+(r-l)/2;
if(f(mid)<0.01&&f(mid)>-0.01) {
printf("%.2lf ",mid);
return;
}
if(f(l)*f(mid)<=0) r=mid;
else l=mid;
}
return;
}
int main()
{
scanf("%lf %lf %lf %lf",&a,&b,&c,&d);
for(double i=-100;i<=105;i+=0.5)
if(f(i)*f(i+0.5)<=0)
{
work(i,i+1);
i+=0.01;
}
return 0;
}