【问题描述】
利用公式
{
x
1
=
−
b
+
b
2
−
4
a
c
2
a
x
2
=
−
b
−
b
2
−
4
a
c
2
a
\begin{cases} x_1=\frac{-b+\sqrt{b^2-4ac}}{2a}\\ x_2=\frac{-b-\sqrt{b^2-4ac}}{2a} \end{cases}
{x1=2a−b+b2−4acx2=2a−b−b2−4ac
求一元二次方程 ax2+ bx + c =0 的根,其中a不等于0。
【输入格式】
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程 ax2 + bx + c =0 的系数。
【输出格式】
输出一行,表示方程的解。
若b2 = 4 * a * c,则两个实根相等,则输出形式为:“x1=x2=…”
若b2 > 4 * a * c,则两个实根不等,则输出形式为:“x1=…x2=…”,其中x1>x2。
若b2 <4 * a * c,则输出形式为:“无实数解”
所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。
【样例输入】
1 2 1
【样例输出】
x1=x2=-1.00000
【参考程序】
#include <bits/stdc++.h>
using namespace std;
int main()
{
double a,b,c;
cin>>a>>b>>c;
double d=(b*b-4*a*c);
if(d<0)
cout<<"无实数解"<<endl;
else
{
double x1 = (-b + sqrt(d))/(2*a);
double x2 = (-b - sqrt(d))/(2*a);
if(d>0)
cout<<"x1="<<fixed<<setprecision(5)<<x1<<";x2="<<fixed<<setprecision(5)<<x2<<endl;
else
cout<<"x1=x2="<<fixed<<setprecision(5)<<x1<<endl;
}
return 0;
}
应广大学生要求,现附上二元一次方程解的LaTex代码:
$\begin{cases}
x_1=\frac{-b+\sqrt{b*b-4ac}}{2a}\\
x_2=\frac{-b-\sqrt{b*b-4ac}}{2a}
\end{cases}$