本题由于幂次太大(最大13)导致l和r不会太大。又因为精度的原因,导致本题枚举就能过。所以申请加强。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=13+4;
typedef double db;
ll n;db l,r,a[N],p[N],maxn=-1e18,ans;
db get(db x){
p[n]=1;
for(int i=n-1;i>=0;i--){
p[i]=p[i+1]*x;
}
db ans=0;
for(int i=0;i<=n;i++){
ans+=p[i]*a[i];
}
return ans;
}
signed main(){
scanf("%lld %lf %lf",&n,&l,&r);
for(int i=0;i<=n;i++){
scanf("%lf",&a[i]);
}
for(db i=l*100000;i<=r*100000;i++){
db nw=get(1.0*i/100000);
if(nw>maxn){
maxn=nw;
ans=i;
}
}
printf("%lf\n",ans/100000);
return 0;
}