三分就是在二分的基础上的进一步确定区间值 先把区间分为三分 然后更新左右区间值
#include
#include
#include
using namespace std;
#define exp 1e-6
double y;
double pow(double a,int b)
{
int i;
double x=1;
for(i=1;i<=b;i++)
{
x*=a;
}
return x;
}
double f(double x)
{
return 6*pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x; ;
}
int main()
{
int T,i,j;
scanf("%d",&T);
while(T--)
{
scanf("%lf",&y);
double row=0,right=100;
while(right-row>exp)
{
double mid1=(2*row+right)/3;
double mid2=(row+2*right)/3;
if(f(mid1)>f(mid2))
row=mid1;
else right=mid2;
}
printf("%.4lf\n",f(row));
}
return 0;
}
|