P1024 [NOIP 2001 提高组] 一元三次方程求解(1.26)

点击查看代码
#include<bits/stdc++.h>
using namespace std;

double a,b,c,d;

double f(double x)
{
    return a*x*x*x+b*x*x+c*x+d;
}

int main()
{
    cin>>a>>b>>c>>d;

    int cnt=0;

    for(int i=-100;i<=100;i++){
        double l=i,r=i+1;
        if(f(l)==0){
            printf("%.2lf ",l);
            cnt++;
        }
        else if(f(l)*f(r)<0){
            for(int k=0;k<100;k++){
                double mid=(l+r)/2;
                if(f(mid)*f(l)<0) r=mid;
                else l=mid;
            }
            cnt++;
            printf("%.2lf ",l);
        }

        if(cnt==3) break;
        
    }

    return 0;
}
posted @ 2026-01-26 22:30  AnoSky  阅读(0)  评论(0)    收藏  举报