/*
题意:给出一个等式,和y的值,x为0~100之间的值,求出x(精确到4位小数)
题解:二分查找对x进行暴力搜索
注意:精度的大小要注意,否则会超时
*/#include <cstdio>
bool bingo(double left, double right)
{
if (left > right)
return true;
int tmpl = left*10000,tmpr = right*10000;
if (left == right)
return true;
else
return false;
}
double result(double x)
{
return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;
}
double bin(double front, double tail, double value)
{
if (value < 6 || value > 807020306)
return -1;
double mid = (front+tail)/2;
while (!bingo(front, tail))
{// 此处精度过大会导致超时,因为当x只有4为精度,因此y同样只可能保证4位精度
if (-1e-5 < result(mid) - value && result(mid) - value < 1e-5)
return mid;
else if (result(mid) < value)
front = mid;
else
tail = mid;
mid = (front+tail)/2;
}
return mid;
}
int main(void)
{
double y;
int t;
scanf("%d",&t);
while (t--)
{
scanf("%lf",&y);
double ans = bin(0,100,y);
if (ans < 0)
printf("No solution!\n");
else
printf("%.4lf\n",ans);
}
return 0;
}