• 百练_2707 求一元二次方程的根


    描述

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

    输入

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

    输出

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

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

    样例输入         

    3
    1.0 3.0 1.0
    2.0 -4.0 2.0
    1.0 2.0 8.0

    样例输出

    x1=-0.38197;x2=-2.61803
    x1=x2=1.00000
    x1=-1.00000+2.64575i;x2=-1.00000-2.64575i

    代码如下:

    #include <cstdio>
    #include <cmath>
    int main()
    {
        int n;
        scanf("%d",&n);
        while(n--){
            double a,b,c;
            double pd;
            double part1,part2;
            scanf("%lf %lf %lf",&a,&b,&c);
            if (a < 0){
                        a = 0 - a;
                        b = 0 - b;
                        c = 0 - c;
                    }
            pd=b*b-4*a*c;
            part1 = (0 - b)/ (2 * a);
            if(pd>0){
                part2 = sqrt(pd)/(2 * a);
                printf("x1=%.5lf;x2=%.5lf
    ",part1+part2,part1-part2);
            }else if(fabs(pd)<1e-8){
                printf("x1=x2=%.5lf
    ",part1);
            }else{
                part2 = sqrt(0 - pd)/ (2 * a);
                printf("x1=%.5lf+%.5lfi;x2=%.5lf-%.5lfi
    ",part1,part2,part1,part2);
            }
        }
        return 0;
    }

    解题思路:

                              咱们讲道理这题一点都不水。看了题目你可能觉得随便写写公式就A了。= =但是坑太多了!有兴趣的同学可以自己试试。样例过了简直没用。这题深井冰!有兴趣的孩子们可以自己试试。附链接     http://bailian.openjudge.cn/practice/2707/   org.org.org.

    
    
  • 相关阅读:
    团队项目成员和题目
    最大联通子数组
    站立会议5
    关于jsp之间href传参(中文)乱码问题
    站立会议4
    典型用户和用户场景描述
    站立会议3
    站立会议2
    站立会议1
    第七周学习进度情况
  • 原文地址:https://www.cnblogs.com/xzt6/p/5730697.html
Copyright © 2020-2023  润新知