二分,50分,求调
查看原帖
二分,50分,求调
1373219
acommonman楼主2024/11/6 19:05
#include<bits/stdc++.h>
using namespace std;
#define db double
const db eps=0.001;
db a,b,c,d;
double f(db x){return a*x*x*x+b*x*x+c*x+d;}

void find(db l,db r){
    while(r-l>=eps){
        db mid=l+(r-l)/2;
        db ll=f(l),rr=f(r),dd=f(mid);
        if(fabs(dd)<=eps){
            printf("%.2lf ",mid);
            return;
        }   
        if(dd*ll<=0)r=mid;
        else l=mid;
    }
}

int main(){
    scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
    int s=0;//记录根数目
    for(db i=-100.00;i<=99.00;i++){
        db ll=f(i),rr=f(i+1);
        if(!ll){
            printf("%.2lf ",i);
            s++;
        }
        else if(ll*rr<0)find(i,i+1),s++;
        if(s==3)return 0;
    }
}

改+交了5遍。。。可能是还没理解好二分

2024/11/6 19:05
加载中...