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;

    }

  • 相关阅读:
    在OC和Swift中使用IBDesignable/IBInspectable
    Swift之贪婪的UIButton
    iOS:如何通过UIEdgeInsetsMake来制作可伸缩的Button
    iOS8中如何将状态栏的字体颜色改为白色
    iOS7 StatusBar 使用小结
    IOS 怎么修改Navigation Bar上的返回按钮文本颜色,箭头颜色以及导航栏按钮的颜色
    android采用videoView播放视频(包装)
    面向对象设计——通用愉快的经历
    OCP-1Z0-051-名称解析-文章12称号
    图片切割工具---产生多个div切割图片 采用for和一的二维阵列设置背景位置
  • 原文地址:https://www.cnblogs.com/c1299401227/p/5370779.html
Copyright © 2011-2022 走看看