记录编号 127214 评测结果 AAAAA
题目名称 [NOIP 2001]一元三次方程求解 最终得分 100
用户昵称 Gravatarhzoi55223 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2014-10-15 06:31:43 内存使用 0.31 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;

int sum=0;
double a,b,c,d;
double p,q;

double calc(double x)
{
	return a*x*x*x+b*x*x+c*x+d;
}

void find(double l,double r)
{
	double mid=0;
	while(r-l>0.001)
	{
		mid=(l+r)/2;
		if(calc(l)*calc(mid)<0)
		{
			r=mid;
		}
		else
		{
			l=mid;
		}
	}
	printf("%0.2lf ",mid);
}

int main()
{
	freopen("3cfc.in","r",stdin);
	freopen("3cfc.out","w",stdout);
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	for(int i=-100;i<100;++i)
	{
		if(calc(double(i))==0)
		{
			sum++;
			printf("%0.2lf ",double(i));
		}
		if(calc(double(i))*calc(double(i+1))<0)
		{
			sum++;
			find(i,i+1);
			if(sum==3)
			{
				break;
			}
		}
	}
	return 0;
}