• 1038 一元三次方程求解


    1038 一元三次方程求解

    2001年NOIP全国联赛提高组

    时间限制: 1 s
    空间限制: 128000 KB
    题目等级 : 白银 Silver
     
     
     
    题目描述 Description

    有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。
    提示:记方程f(x)=0,若存在2个数x1和x2,且x1<x2,f(x1)*f(x2)<0,则在(x1,x2)之间一定有一个 根。

    输入描述 Input Description

    一个三次方程的各项系数

    输出描述 Output Description

    三个解

    样例输入 Sample Input

    1   -5   -4   20

    样例输出 Sample Output

    -2.00   2.00   5.00

    数据范围及提示 Data Size & Hint
     1 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 double f(double);
     5 double a,b,c,d;
     6 int main()
     7 {
     8     double x1,x2,xx;
     9     cin>>a>>b>>c>>d;
    10     for(int x=-100;x<=100;x++)
    11      {
    12          x1=x;
    13          x2=x+1;
    14          if(f(x1)==0)printf("%.2lf ",x1);
    15          if(f(x1)*f(x2)<0)
    16           {
    17               while(x2-x1>=0.001)
    18                {
    19                    xx=(x2+x1)/2;
    20                    if(f(x1)*f(xx)<=0)
    21                     x2=xx;
    22                     else x1=xx;
    23                }
    24               printf("%.2lf ",x1); 
    25           }
    26      }
    27      cout<<endl;
    28 }
    29 double f(double x)
    30 {
    31     return x*x*x*a+x*x*b+x*c+d;
    32 }
  • 相关阅读:
    Mysql性能优化
    PHP IF判断简写
    PHP与MYSQL事务处理
    js获取select标签选中的值
    oralce 的安装以及plsql的配置的html连接
    mysql 中启动服务的命令 、登录命令、退出命令 mysql 的常用命令
    oracle 中 某个字段的长度不够的sql 语句
    随机获得id的方法
    java中解析excel 批量插入数据库
    java 调用存储过程
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/6612956.html
Copyright © 2020-2023  润新知