题意:
求解一个一元二次方程,并将解升序输出。
题解;
模拟题意即可,要处理很多细节。
#include<bits/stdc++.h> using namespace std; const int maxn=2e5+100; long double a,b,c; int main () { scanf("%Lf %Lf %Lf",&a,&b,&c); if (a==0&&b==0&&c==0) { return printf("-1 "),0; } if (a==0&&b==0&&c!=0) { return printf("0 "),0; } if (a==0) { return printf("1 %.10Lf ",-1.0*c/b),0; } long double d=(b*b-4*a*c); if (d<0) { return printf("0 "),0; } if (d==0) { return printf("1 %.10Lf ",-1.0*b/(2*a)),0; } printf("2 "); if (a>0) printf("%.10Lf ",(-1.0*b-sqrt(d))/(2*a)), printf("%.10Lf ",(-1.0*b+sqrt(d))/(2*a)); else printf("%.10Lf ",(-1.0*b+sqrt(d))/(2*a)), printf("%.10Lf ",(-1.0*b-sqrt(d))/(2*a)); return 0; }