RT,会输出nan
#include<bits/stdc++.h>
#include<complex>
using namespace std;
double a,b,c,d;
complex<double> w(-0.5,sqrt(3) / 2);
complex<double> x1,x2,x3;
int main(){
cin>>a>>b>>c>>d;
double p = -1.0 * (b * b) / (3 * a);
double q = (2.0 * b * b * b) / (27 * a * a) - (b * c) / (3 * a) + d;
double A = cbrt(-1 * q + sqrt(q * q + (p / 3) * (p / 3) * (p / 3)));
double B = cbrt(-1 * q - sqrt(q * q + (p / 3) * (p / 3) * (p / 3)));
x1 = -1.0 * (b) / (3 * a) + (A + B) / 2.0;
x2 = -1.0 * (b) / (3 * a) + w * w * (A + w * B) / 2.0;
x3 = -1.0 * (b) / (3 * a) + w * (A + w * w * B) / 2.0;
cout<<x1<<" "<<x2<<" "<<x3;
return 0;
}
暂且不考虑顺序、格式等的问题。