zoukankan      html  css  js  c++  java
  • 百练_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.

    
    
  • 相关阅读:
    Golang gRPC学习(01): gRPC介绍
    MySQL InnoDB存储引擎大观
    SpringBoot学习-图文并茂写Hello World
    Golang的goroutine协程和channel通道
    业务 产品 技术的一点看法
    需求一直做不完,怎么办?
    技术管理:项目开发中的几种风险管理
    go内存管理
    etcd实现分布式锁分析
    强缓存与协商缓存
  • 原文地址:https://www.cnblogs.com/xzt6/p/5730697.html
Copyright © 2011-2022 走看看