题目: http://acm.hdu.edu.cn/showproblem.php?pid=2199
二分 注意精度
#include <stdio.h> #include <math.h> int t; double y, x, l, r, ans; double f(double x) { return 8*pow(x, 4)+7*pow(x, 3)+2*pow(x, 2)+3*x+6; } int main() { // freopen("in.txt","r", stdin); scanf("%d", &t); while (t--) { scanf("%lf", &y); if (y<f(0)||y>f(100)) {printf("No solution!\n"); continue;} l=0.0, r=100.0; while (r-l>1e-7) { double m=(l+r)/2.0; double ans=f(m); if (ans<y) l=m+1e-8; else r=m-1e-8; } printf("%.4lf\n", (l+r)/2.0); } return 0; }