水题
二分
#include <bits/stdc++.h>
using namespace std;
#define eps 1e-7
double y;
double f (double x) {
return 42*x*x*x*x*x*x + 48*x*x*x*x*x + 21*x*x + 10*x - y;
}
double f2 (double x) {
return 6*x*x*x*x*x*x*x + 8*x*x*x*x*x*x + 7*x*x*x + 5*x*x - y*x;
}
double solve () {
double l = 0.0, r = 100.0, mid;
while (r-l >= eps) {
mid = (l+r)/2.0;
if (f (mid) > eps) {
r = mid;
}
else if (f (mid) < -eps) {
l = mid;
}
else return mid;
}
return r;
}
int main () {
//freopen ("in", "r", stdin);
int t;
cin >> t;
while (t--) {
cin >> y;
double ans = solve ();
printf ("%.4f\n", f2 (ans));
}
return 0;
}
三分
#include <bits/stdc++.h>
using namespace std;
#define eps 1e-7
double y;
double f (double x) {
return 6*x*x*x*x*x*x*x + 8*x*x*x*x*x*x + 7*x*x*x + 5*x*x - y*x;
}
double solve () {
double l = 0.0, r = 100.0, ll, rr;
while (r-l >= eps) {
ll = (2*l+r)/3, rr = (2*r+l)/3;
double p1 = f (ll), p2 = f (rr);
if (p2 > p1)
r = rr;
else l = ll;
}
return r;
}
int main () {
//freopen ("in", "r", stdin);
int t;
cin >> t;
while (t--) {
cin >> y;
double ans = solve ();
printf ("%.4f\n", f (ans));
}
return 0;
}