函数单调增,二分做。
代码如下:
#include <iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <cstring> using namespace std; double fx(double x) { return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6; } int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int t; double y; scanf("%d", &t); while(t--) { double l = 0, r = 100, mid; scanf("%lf", &y); if(y>=fx(0) && y<=fx(100)) { while(l <= r) { mid = (l + r) / 2; if(fx(mid) > y) r = mid - 1e-7; else l = mid + 1e-7; } printf("%.4lf\n", (r+l)/2); } else printf("No solution!\n"); } return 0; }