记录编号 550954 评测结果 AAAAA
题目名称 [NOIP 2001]一元三次方程求解 最终得分 100
用户昵称 Gravatar锝镆氪锂铽 是否通过 通过
代码语言 C++ 运行时间 0.002 s
提交时间 2020-03-25 20:56:48 内存使用 4.40 MiB
显示代码纯文本
#include<cstdio>
#include<cmath>
using namespace std;

double f(double x);

double a,b,c,d;
int main(){
	freopen("3cfc.in","r",stdin);
	freopen("3cfc.out","w",stdout);
	scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
	int cot=0;
	for(double x=-100;x<=100;x++){
		if(cot>=3)
			break;
		if(f(x)==0){
			printf("%0.2lf ",x);
			cot++;
			continue;
		}
		if(f(x)*f((x+1))<0){
			double x1=x,x2=x+1,xx;
			while(1){
				xx=(x1+x2)/2;
				if((x2-x1)<1e-5){
					printf("%0.2lf ",x2);
					break;
				}
				if(f(xx)==0){
					printf("%0.2lf ",xx);
					break;
				} 
				if(f(x1)*f(xx)<0)
					x2=xx;
				else
					x1=xx;
			}
			cot++;
		}
	}
	return 0;
}

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