// 答え分からん・・・サンプル2のやつだけ直した #include #include #include using namespace std; int main() { long long a, b, c; cin >> a >> b >> c; cout << setprecision(60); if (a == 0LL) { if (b == 0LL) { if (c == 0LL) { cout << (-1) << endl; } else { cout << 0 << endl; } } else { cout << 1 << endl << (-(long double)c / (long double)b) << endl; } } else { if (b == 0LL) { if (c == 0LL) { cout << 1 << endl << 0 << endl; } else { long double e = -(long double)c / (long double)a; if (e < 0.0) { cout << 0 << endl; } else { long double x = sqrt(e); cout << 2 << endl << (-x) << endl << x << endl; } } } else { if (c == 0LL) { long double x = -(long double)b / (long double)a; cout << 2 << endl << min(x, (long double)0) << endl << max(x, (long double)0) << endl; } else { long long D = b * b - 4LL * a * c; if (D < 0LL) { cout << 0 << endl; } else if (D == 0LL) { cout << 1 << endl << (-(long double)b / (long double)(2LL*a)) << endl; } else if (D > 0LL) { long double y = (-(long double)b - sqrt((long double)D)) / (long double)(2LL*a); long double z = (-(long double)b + sqrt((long double)D)) / (long double)(2LL*a); cout << 2 << endl << min(y, z) << endl << max(y, z) << endl; } } } } return 0; }