718 二分法求多项式单根 (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;
}
原文地址:https://www.cnblogs.com/tomori/p/13393487.html