zoukankan      html  css  js  c++  java
  • 44.分治算法练习:  一元三次方程求解


    ·                                 查看

    ·                                 提交

    ·                                 统计

    ·                                 提问

    总时间限制: 

    1000ms

     

    内存限制: 

    65536kB

    描述

    有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程。

    给出该方程中各项的系数(abc 均为实数),并约定该方程存在三个不同实根(根的范围在-100100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。

    输入

    一行,包含四个实数abcd,相邻两个数之间用单个空格隔开。

    输出

    一行,包含三个实数,为该方程的三个实根,按从小到大顺序排列,相邻两个数之间用单个空格隔开,精确到小数点后2位。

    样例输入

    
    1.0 -5.0 -4.0 20.0
    

    样例输出

    
    -2.00 2.00 5.00
    

    代码:

    #include

    using namespace std;

    #include

    #include

    #include

    #include

    double a,b,c,d;

    double f(double x)

    {

           return a*x*x*x+b*x*x+c*x+d;

    }

    int t=0;

    int main()

    {

           scanf("%lf%lf%lf%lf",&a,&b,&c,&d);

           for(int i=-100;i<=100;++i)

             

               double z=i,y=z+1;

                  if(f(z)==0)

                  {

                         printf("%.2f ",z);

                  }

               else{

              

                      if((f(z)*f(y))<0)//如果是<=0的话,那么每个结果都会输出两次 ,因为条件重复了

                      {

                             while(y-z>=0.001)//当不满作条件的话,精度值进位不会影响到z的两位小数的结果,

                             {

                                    double mid=(z+y)/2;

                                    if((f(z)*f(mid))<=0)

                                    {

                                           y=mid;

                                       }

                                       else {

                                              z=mid;

                                       }

                                }

                                printf("%.2f ",z);//最后总是输出z,因为当精度够了之后,zy进位成0.2f结果是相同的

                         }

                  }

           }

           printf(" ");

           return 0;

    }

  • 相关阅读:
    Redis 锁
    Redis 持久化
    Redis 数据淘汰策略
    Redis 事务命令
    【vue禁止复制粘贴】
    tsconfig.json无法写入webpack.config.js 因为它会覆盖输入文件。
    npm 进阶命令知多少(一)
    如何将360度评估调查应用于员工发展?
    如何利用360度评估做好民主评议促进干部管理与选拔?
    手把手带你使用360度评估系统实施绩效反馈全流程(附详细图文)
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290418.html
Copyright © 2011-2022 走看看