#include #include #include #include #include using namespace std; constexpr long double kEps = 1E-13, nEps = 1E-12, kInf = 1E20; int main() { long long int a, b, c; scanf("%lld%lld%lld", &a, &b, &c); if (a == 0) { if (b == 0) { if (c == 0) printf("-1\n"); else printf("0\n"); } else printf("1\n%.20lf\n", (double)((long double)c / (long double) -b)); } else { if (a < 0) { a = -a; b = -b; c = -c; } long double ta(a), tb(b), tc(c), d, sa, sb, l, r, mid; d = b * b - 4 * a * c; if (b * b - 4 * a * c > 0) { if (a >= 100000000) { d = sqrtl(d); sa = (-tb + d) / ta / 2; sb = (-tb - d) / ta / 2; if (sa < sb) printf("2\n%.20lf\n%.20lf\n", (double) sa, (double) sb); else printf("2\n%.20lf\n%.20lf\n", (double) sb, (double) sa); return 0; } cout << 2 << '\n'; d = sqrtl(d); l = -kInf; r = -tb / ta / 2 + kEps; for (int i = 0; i < 100000; i++) { mid = (l + r) / 2; if (ta * mid * mid + tb * mid + tc > kEps) l = mid; else if(ta * mid * mid + tb * mid + tc < - kEps) r = mid; } mid = (l + r) / 2; cout << setprecision(2000) << mid << '\n'; sa = a * mid * mid + b * mid + c; l = -tb / ta / 2 - kEps; r = kInf; for (int i = 0; i < 100000; i++) { mid = (l + r) / 2; if (ta * mid * mid + tb * mid + tc > kEps) r = mid; else if(ta * mid * mid + tb * mid + tc < - kEps) l = mid; } mid = (l + r) / 2; cout << setprecision(2000) << mid << '\n'; sa = a * mid * mid + b * mid + c; } else if (b * b - 4 * a * c < 0) printf("0\n"); else printf("1\n%.20lf\n", (double) (-tb / (ta * 2))); } }