Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13674 Accepted Submission(s): 6086
#include <iostream>
#include <cmath>
#include <iomanip>
const double p = 0.000001;;
using namespace std;
double calculate(double x,double Y)
{
return 8*pow(x,4)+7*pow(x,3)+2*pow(x,2)+3*x+6;
}
double lookup(double left,double right,double Y)
{
double mid;
while(right - left >p ) //二分查找
{
mid = (right+left)/2.0;
if(calculate(mid,Y) > Y) right = mid;
else left = mid;
}
return mid;
}
int main()
{
int T;
double Y,right,left;
cin>>T;
while(T--)
{
cin>>Y;
left = 0; right = 100;
if(calculate(left,Y) > Y || calculate(right,Y) <Y)
{
cout<<"No solution!"<<endl;
continue;
}
else
cout<<setiosflags(ios::fixed)<<setprecision(4)<<lookup( left,right, Y)<<endl;
}
}