#include<bits/stdc++.h>

using namespace std;
int n;
double l,r,a[100010];
double check(double x){//f(x)=pow(x,3)-pow(3x,2)-3x+1 
    double ans=0;
    for(int i=1;i<=n+1;i++){
        ans=ans*x+a[i];//累加pow(ans,x) 
    }
    return ans;
}
int main(){
    cin>>n>>l>>r;
    for(int i=1;i<=n+1;i++){
        cin>>a[i];
    }
    while(r-l>1e-15){//精度差不小于1e-15(函数系数均在 [-100,100] 内且至多 1515 位小数) 
        double mid1=l+(r-l)/3.0;//单调递增 <0 
        double mid2=r-(r-l)/3.0;//单调递减 >0
        if(check(mid1)<check(mid2)){
            l=mid1;
        }else{
            r=mid2;
        }
    }
    cout<<l;
    return 0;
}

0 comments

No comments so far...