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;

    }

  • 相关阅读:
    winform中的确定取消
    jquery ui
    BS中的 data:image/png;base64
    关于如何在MVC中 执行JS
    JS base64 加密和 后台 base64解密(防止中文乱码)
    jqgrid 中的事件
    URL重写无效
    JS创建缩略图
    ComponentArt.web.ui中文帮助之Grid(一)
    Microsoft Volta: Web时代的VB!
  • 原文地址:https://www.cnblogs.com/csgc0131123/p/5290418.html
Copyright © 2011-2022 走看看