您好,欢迎访问三七文档
当前位置:首页 > 中学教育 > 初中教育 > 作业13-求一元二次方程的根
ProblemF:求一元二次方程的根TimeLimit:1SecMemoryLimit:2MBSubmit:5505Solved:813[Submit][Status][WebBoard]Description一元二次方程的标准形式为ax2+bx+c=0(a≠0),其中a、b、c为常数。求解一元二次方程的根x时有三种情况,分别为(记Δ=b2-4ac):1.Δ0,有两个不等的实根;2.Δ=0,有两个相同的实根;3.Δ0,有两个共轭的虚根。Input输入为多行,每行为一元二次方程的三个常数a,b,c,在double类型范围之内。当输入的a为0时,表示输入结束。Output每行输入的样例对应三行输出。第一行输出为样例的编号。第二行输出为所输入常数a,b,c对应的一元二次方程的标准形式,要求输出满足a0。第三行输出为所输入方程的根,分为三种情况:1.若方程满足Δ0,即有两不等实根x1、x2,则按顺序(先小后大)输出这两个实根。2.若方程满足Δ=0,即有两相同实根x,则输出一个实根。3.若方程满足Δ0,即有两共轭的虚根x1、x2,则输出两个虚根,虚部符号为正的(即u+vi形式)先输出,虚部符号为负的(x-yi形式)后输出。以上输出均不输出数学上无意义或可省略的的符号,所有数值最多保留6位有效数字。每个样例之后都有一个空行分隔。SampleInput121-12-1-52-0.2-32030122440SampleOutputCase1:x^2+2x+1=0onlyonerealroot:-1Case2:x^2-2x+1=0onlyonerealroot:1Case3:5x^2-2x+0.2=0onlyonerealroot:0.2Case4:3x^2-2x=0tworealroots:0,0.666667Case5:3x^2+12=0twoimaginaryroots:2i,-2iCase6:2x^2+4x+4=0twoimaginaryroots:-1+i,-1-iHINT输出方程格式的各种情况要想清楚,这一部分测试数据给的很全面。另一个就是浮点数的精度控制,这一部分sample给出了例子。值得注意的是,linux下gcc编译的浮点数运算结果有-0,这是OJ系统Judge端使用的系统;而windowsXP下的minGW编译器和VC6不会产生-0,只会输出0;但windows7下的minGW编译器是能够产生-0的(确实很诡异)。因此使用windowsXP的同学忽略了对结果为0的检测,程序需要对结果为0的情况进行全面考虑,确保正确的输出0。这个问题卡了好些同学好几天。关于是否会产生-0,输出表达式0.0/-1的结果就能测试出来。浮点数从负数方向运算出结果为0,则浮点值为-0是符合C语言浮点数运算规则的,目前尚不清楚windowsXP系统不能产生-0的原因。AppendCode
本文标题:作业13-求一元二次方程的根
链接地址:https://www.777doc.com/doc-2685891 .html