1 #include <iostream> 2 #include <cstdio> 3 using namespace std; 4 int n; 5 const double eps = 1e-7; 6 double l , r; 7 double x[15]; 8 double check(double q) 9 { 10 double ans = 0.0; 11 for(int i = n; i >= 0; i--) 12 ans = ans * q + x[i]; 13 return ans; 14 } 15 int main() 16 { 17 scanf("%d%lf%lf" , &n , &l , &r); 18 for(int i = n; i >= 0; i--) 19 scanf("%lf" , &x[i]); 20 while(r - l > eps) 21 { 22 double mid = (l + r) / 2; 23 if(check(mid - eps) < check(mid + eps)) 24 l = mid; 25 else 26 r = mid; 27 } 28 printf("%.5f" , (l + r) / 2); 29 return 0; 30 }
三分法