首页 > 其他分享 >[NOIP2001 提高组] 一元三次方程求解

[NOIP2001 提高组] 一元三次方程求解

时间:2022-08-14 19:14:07浏览次数:73  
标签:lf% 一元 NOIP2001 求解 double 样例 输出 2.00

试题描述:
enter image description here

输入

一行,4个实数 a,b,c,d

输出

一行,3 个实根,从小到大输出,并精确到小数点后 2 位。

样例输入
1 -5 -4 20
样例输出
-2.00 2.00 5.00

#include<bits/stdc++.h>

using namespace std;

double a,b,c,d,i=-100;

double AZ(double x)
{
    return i*i*i*a+i*i*b+i*c+d;//求值函数
}

int main()
{
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    
    for(i;i<=100;i+=0.01)
    {
        if(abs(AZ(i))<0.00001)
        {
            printf("%.2lf ",i);//如果答案足够接近0输出
        }
    } 
    
    return 0;
}

 

标签:lf%,一元,NOIP2001,求解,double,样例,输出,2.00
From: https://www.cnblogs.com/XdzxBo/p/16586066.html

相关文章

  • [NOIP2001 提高组] 一元三次方程求解
    [NOIP2001提高组]一元三次方程求解分析:由题意得,本题要求的是一元三次方程等于0时的三个根,由图像我们可知等于0时的根左右两侧的点的纵坐标乘积(也就是根)为负数,因为题目......
  • [NOIP2001 提高组] 一元三次方程求解
    #include<bits/stdc++.h>usingnamespacestd;intmain(){ doublea,b,c,d,x1,x2,x3; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); for(doublei=-100;i<=100;i+=0.001)//枚举每个......