//函数在0——100,肯定是先递减后递增的,所以求导数为0的点,用二分
#include<stdio.h>
double y;
double F(double x)
{
return ((6*x+8)*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x);
}
double f(double x)
{
return ((42*x+48)*x*x*x*x*x+21*x*x+10*x-y);
}
int main()
{
int t;
double left,right,mid;
scanf("%d",&t);
while(t--)
{
scanf("%lf",&y);
left=0.0;right=100.0;
while(right-left>=0.0000000001)
{
mid=(left+right)/2;
if(f(mid)<=0)left=mid;
else right=mid;
}
printf("%.4f\n",F(left));
}
return 0;
}
hdu 2899 (数学+二分)
最新推荐文章于 2020-11-09 21:02:34 发布