题目地址: http://acm.hdu.edu.cn/showproblem.php?pid=2199
二分查找+剪枝
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
using namespace std;
/*
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
*/
#define eps 1e-8
double f(double x)
{
return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;
}
int main()
{
int i,j,t;
double y;
cin>>t;
while(t--)
{
scanf("%lf",&y);
double l=0.0,r=100.0,mid;
if(f(l)>y||f(r)<y)
{
printf("No solution!\n");
continue;
}
while(r-l>eps)
{
mid=(l+r)/2;
if(f(mid)>y)
r=mid;
else
l=mid;
}
printf("%.4f\n",mid);
}
return 0;
}