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.

    
    
  • 相关阅读:
    核心API的使用(给定一个字符串,统计每个字符出现的次数)
    将博客搬至CSDN
    [DEBUG] python写文件时print漏掉整行数据
    [DEBUG] pyinstaller打包-命令行报错 pyinstaller failed to execute script 脚本名
    [DEBUG] springboot结合freemaker和js实现页面跳转和传值-踩坑记录
    724. 寻找数组的中心索引
    1010. 总持续时间可被 60 整除的歌曲
    27.移除元素
    [tensorflow] 入门day1-数据整理与展示
    [tensorflow] 安装
  • 原文地址:https://www.cnblogs.com/xzt6/p/5730697.html
Copyright © 2011-2022 走看看