版权声明:https://blog.csdn.net/huashuimu2003 https://blog.csdn.net/huashuimu2003/article/details/85397091
三分法
https://www.luogu.org/problemnew/show/P3382
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-7;//其实一般精度*0.1=1e-6就可以了
int n;
double L,R;
double a[15];
//普通的求多项式
/*double F(double x)
{
double f=0;
for(int i=n;i>=0;i--)
{
double t=1;
for(int j=1;j<=i;j++)
t*=x;
f+=a[i]*t;
}
return f;
}*/
//秦九韶算法从里到外逐层计算一次多项式的值
double F(double x)
{
double sum=0;
for(int i=n;i>=0;i--)
sum=sum*x+a[i];
return sum;
}
int main()
{
cin>>n>>L>>R;
for(int i=n;i>=0;i--) cin>>a[i];
while(fabs(L-R)>=eps)
{
double mid=(L+R)/2;
if(F(mid+eps)>F(mid-eps)) L=mid;//舍弃左区间
else R=mid;//舍弃右区间
}
printf("%.5lf",R);
return 0;
}