7-18 二分法求多项式单根 (20分)

#include<iostream>
#include<cstdio>

using namespace std;

float a, b, c, d;
float l, r;

float clac(float x){
    return a * x * x * x + b * x * x + c * x + d;
}

float find(float l, float r){
    while(r - l > 1e-5){ // 此处注意写1e-8会超时
        float mid = (l + r) / 2;
        float lv = clac(l), mv = clac(mid);
        if(lv * mv <= 0) r = mid;
        else l = mid;
    }
    return (l + r) / 2;
}


int main(){
    cin >> a >> b >> c >> d;
    cin >> l >> r;
    
    printf("%.2f", find(l, r));
    return 0;
}
posted @ 2020-07-28 19:56  yys_c  阅读(80)  评论(0编辑  收藏  举报