3306: 求一元二次方程

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:0 解决:0

题目描述

求一元二次方程ax2+bx+c=0的根,其中a不等于0。结果要求精确到小数点后5位。

输入

输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程的系数。

输出

输出一行,表示方程的解。若两个实根相等,则输出形式为:“x1=x2=...“;若两个实根不等,在满足根小者在前的原则,则输出形式为:“x1=...;x2=...“;若无实根输出“No answer!”。
所有输出部分要求精确到小数点后5位,数字、符号之间没有空格。

样例输入 复制

-15.97 19.69 12.02

样例输出 复制

x1=-0.44781;x2=1.68075

提示

       比较浮点数相等,由于精度问题,直接比较有时可能会出错,在比较的时候需要用一个很小的数值来进行比较,当二者之差小于这个很小的数时,就认为二者是相等的了,这个很小的数,称为精度。本题中(要求精确到小数点后5位)用到的精度为1e-6.也就是0.000001.所以对于两根浮点数x1,x2,如果要比较大小,如果fabs(x1-x2)<=1e-6,那么就是相等了。 fabs是求浮点数绝对值的函数。注意:(1):if(条件1) 语句1; if(条件2) 语句2; (2):if(条件1) 语句1; else if(条件2) 语句2; 双if语句,条件1和条件2都要判断后,按条件执行。而if,else if 当条件1满足后,else if后的语句就不会执行。