裸题!不是三分就是二分了,根据题意,明显的三分搜索。
#include<stdio.h>
#include<math.h>
#define eps 1e-8
double count(double x,double y)
{
return 6 *pow(x,7)+8*pow(x,6)+7*pow(x,3)+5*pow(x,2)-y*x;
}
int sign(double x)
{
return x<-eps?-1:x>eps;
}
double search(double y)
{
double L=0,R=100,min;
while(sign(R-L)>=0){
double midr=(L+R)/2;
double midl=(midr+L)/2;
double f1=count(midl,y);
double f2=count(midr,y);
if(sign(f2-f1)>0){
min=f1;
R=midr-eps;
}
else{
min=f2;
L=midl+eps;
}
}
return min;
}
int main()
{
int t;
double y;
scanf("%d",&t);
while(t--){
scanf("%lf",&y);
printf("%.4lf\n",search(y));
}
return 0;
}