zoukankan      html  css  js  c++  java
  • 一元三次方程

    题目描述

    有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求三个实根。

    输入

    四个实数:a,b,c,d

    输出

    由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位

    样例输入

    1 -5 -4 20
    

    样例输出

    -2.00 2.00 5.00
    

    提示

    数据规模和约定
    |a|,|b|,|c|,|d|<=10

    这是道简单的分治。将问题逐步缩小。
    子问题与原问题形式相同,相互独立,分开后容易被解决,子问题的解可以合并。
    #include <bits/stdc++.h>
    
    using namespace std;
    double a,b,c,d;
    double fun(double x)
    {
        return a*x*x*x+b*x*x+c*x+d;
    }
    int main()
    {
        double x1,x2,xx;
        int i;
       cin>>a>>b>>c>>d;
        for(i=-100;i<=100;i++){
            x1=i,x2=i+1;
            if(fun(x1)==0){
                printf("%.2f ",x1);
            }
            else if(fun(x1)*fun(x2)<0){
                while(x2-x1>=0.001){
                    xx=(x1+x2)/2;
                    if((fun(x1)*fun(xx))<=0) x2=xx;
                    else x1=xx;
                }
                printf("%.2f ",x1);
            }
        }
        return 0;
    }
    View Code

    然后之所以超时那么多次

    就是我把那个xx在中间定义,反复定义然后超时了

    用cin挺安全,没啥问题

    不要忘记努力,不要辜负自己 欢迎指正 QQ:1468580561
  • 相关阅读:
    12-单表查询
    11-数据的增删改
    10-外键的变种 三种关系
    09-完整性约束
    08-数据类型(2)
    07-数据类型
    06-表的操作
    05-库的操作
    Spring:(六) 代理模式
    Spring:(五) 注解
  • 原文地址:https://www.cnblogs.com/smallocean/p/8764063.html
Copyright © 2011-2022 走看看