高精度浮点数二分。
#include<iostream>
#include<cmath>
using namespace std;
double Y;
double f(double x)
{
return 8*pow(x,4.0)+7*pow(x,3.0)+2*pow(x,2.0)+3*x+6;
}
void bs(double y)
{
double left=0,right=100;
double mid;
if(f(0)<=y && y<=f(100))
{
while(right-left>1e-6)
{
mid=(left+right)/2;
double ans = f(mid);
if(ans>y)
{
right=mid-1e-7;
}
else
{
left=mid+1e-7;
}
}
printf("%.4lf\n",mid);
}
else cout<<"No solution!\n";
}
int main()
{
int t;
cin>>t;
while(t--)
{
cin>>Y;
bs(Y);
}
return 0;
}