记录编号 130163 评测结果 AAAAA
题目名称 [NOIP 2001]一元三次方程求解 最终得分 100
用户昵称 Gravatar微凉徒眸意 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2014-10-21 20:39:30 内存使用 0.31 MiB
显示代码纯文本
/*问题描述
有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
提示:记方程f(x)=0,若存在2个数x1和x2,且x1,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个 根。
样例
输入:1   -5   -4   20
输出:-2.00   2.00   5.00*/
#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
double p2(double x)
{
	return x*x;
}
double p3(double x)
{
	int i;
	double ans=1;
	for(i=1;i<=3;i++) ans*=x;
	return ans;
}
int main()
{
	freopen("3cfc.in","r",stdin);
	freopen("3cfc.out","w",stdout);
	double a,b,c,d;
	double i=-110;
	cin>>a>>b>>c>>d;
	while(i<=110){
		if(abs(a*p3(i)+b*p2(i)+c*i+d)*1000<=10) printf("%.2lf ",i);
		i+=0.01;
		}
	return 0;
}