注意数字 a 如果在[0, 1],那么它的立方根是比它大的,右边界取到 a 是不够的,负数同理。

#include <bits/stdc++.h>

using namespace std;

void solve(double &a) 
{
    double lo = a < 0 ? min(a, -1.0) : 0.0;
    double hi = a > 0 ? max(a, 1.0) : 0.0;
    for (int i = 0; i < 1000; i++) {
        double mid = (double)(lo + hi) / 2;
        if (mid * mid * mid < a) lo = mid;
        else hi = mid;
    }

    cout << setiosflags(ios::fixed) << setprecision(1) << lo << endl;
}

int main()
{
    double a;
    for (; cin >> a;)
        solve(a);
    return 0;
}