记录编号 |
130163 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2001]一元三次方程求解 |
最终得分 |
100 |
用户昵称 |
微凉徒眸意 |
是否通过 |
通过 |
代码语言 |
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;
}