h0053. 求一元二次方程的根 (10 分)

简介: h0053. 求一元二次方程的根 (10 分)

利用公式x1 = (-b + sqrt(b* b-4* a* c))/(2* a), x2 = (-b - sqrt(b* b-4* a* c))/(2* a)求一元二次方程ax^2 + bx + c =0的根,其中a不等于0。


输入格式:

第一行是待解方程的数目n。 其余n行每行含三个浮点数a, b, c(它们之间用空格隔开),分别表示方程ax^2 + bx + c =0的系数。


输出格式:

输出共有n行,每行是一个方程的根: 若是两个实根,则输出:x1=...;x2 = ... 若两个实根相等,则输出:x1=x2=... 若是两个虚根,则输出:x1=实部+虚部i; x2=实部-虚部i


所有实数部分要求精确到小数点后5位,数字、符号之间没有空格。 x1和x2的顺序:x1的实部>Re的实部||(x1的实部==x2的实部&&x1的虚部>=x2的虚部)


输入样例:

1. 3
2. 1.0 3.0 1.0
3. 2.0 -4.0 2.0
4. 1.0 2.0 8.0


输出样例:

在这里给出相应的输出。例如:

1. x1=-0.38197;x2=-2.61803
2. x1=x2=1.00000
3. x1=-1.00000+2.64575i;x2=-1.00000-2.64575i


#include<bits/stdc++.h>
using namespace std;
int main()
{
    double a,b,c;
    int n;
    cin>>n;
    while(n--)
    {
        cin>>a>>b>>c;
        double p = b * b - 4 * a * c;
        double x1 = -b / (2 * a);
        if(!x1) x1 = 0;//防止出现 -0 的情况
        if(p > 0) printf("x1=%.5f;x2=%.5f\n",(-b + sqrt(p)) / (2 * a),(-b - sqrt(p)) / (2 * a));
        else if(p == 0) printf("x1=x2=%.5f\n",x1);
        else
        {
            p = -p;
            double y1 = sqrt(p) / (2 * a);
            double y2 = -sqrt(p) / (2 * a);
            printf("x1=%.5f%+.5fi;x2=%.5f%+.5fi\n",x1,y1,x1,y2);
        }
    }
    return 0;
}
目录
相关文章
|
9月前
|
算法 测试技术 C#
【动态规划】【同余前缀和】【多重背包】[推荐]2902. 和带限制的子多重集合的数目
【动态规划】【同余前缀和】【多重背包】[推荐]2902. 和带限制的子多重集合的数目
|
9月前
|
测试技术
【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目
【动态规划】【组合数学】1866. 恰有 K 根木棍可以看到的排列数目
|
8月前
|
移动开发 C++
【洛谷 P1157】组合的输出 题解(深度优先搜索+枚举子集)
该问题要求编程输出从1到n中选择r个元素的所有组合,组合按字典序排列。输入包含两自然数n和r(1&lt;n&lt;21, 0≤r≤n)。输出每个组合时,每个数字占据3个字符宽度。提供的AC代码使用C++,通过递归搜索方法枚举子集。样例输入为5 3,输出显示所有3个元素的组合。
65 0
|
9月前
|
编译器 数据安全/隐私保护
PTA 线性表 7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 按出列次序输出每个人的编号
PTA 线性表 7-1 约瑟夫环(Josephus)问题(by Yan) (100分) 按出列次序输出每个人的编号
|
9月前
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
【错题集-编程题】删除相邻数字的最大分数(动态规划 - 线性 dp)
|
9月前
## 标题: 求一元二次方程的根(25分)
## 标题: 求一元二次方程的根(25分)
|
存储 算法
算法训练Day18|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
算法训练Day18|● 513.找树左下角的值● 112. 路径总和 113.路径总和ii● 106.从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树
7-157 求一元二次方程的根
7-157 求一元二次方程的根
107 0
|
存储 算法 C语言
6-1 最小生成树(普里姆算法) (10分)
6-1 最小生成树(普里姆算法) (10分)
6-1 最小生成树(普里姆算法) (10分)
20:求一元二次方程的根
20:求一元二次方程的根
140 0