NOIP2001提高組 一元三次方程求解
2011年10月08日 03:41
问题描述
有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个 根。
样例
输入:1 -5 -4 20
输出:-2.00 2.00 5.00
【分析】
由於精度不大,直接枚舉即可。
一下代碼參考了BYVoid(http://www.byvoid.com)的代碼~他的代碼比我的簡練多了~
#include <cstdio> #include <iostream> using namespace std; int main() { double a,b,c,d,x,v; int X; freopen("3cfc.in","r",stdin); freopen("3cfc.out","w",stdout); cin>>a>>b>>c>>d; for (X=-10000;X<=10000;x=(++X)/100.0) { v=a*x*x*x+b*x*x+c*x+d; if (v>=-0.01 && v<=0.01) printf("%.2lf ",x); } return 0; }
正在连接评测机...
已连接到评测机
GRID | 1 |
名称 | Flitty |
系统版本 | 1.00 |
备注 | COGS 1号评测机 Flitty |
正在编译...
编译成功
测试点 | 结果 | 得分 | 运行时间 | 内存使用 | 退出代码 |
1 | 正确 | 20 | 0.027 s | 273 KB | 0 |
2 | 正确 | 20 | 0.001 s | 273 KB | 0 |
3 | 正确 | 20 | 0.001 s | 273 KB | 0 |
4 | 正确 | 20 | 0.001 s | 273 KB | 0 |
5 | 正确 | 20 | 0.001 s | 273 KB | 0 |
运行完成
运行时间 0.031 s
平均内存使用 273 KB
测试点通过状况 AAAAA
得分:100
恭喜你通过了全部测试点!