#include #include #include using namespace std; struct Number { int exponent; double mantisa; Number(long double x = 0) { mantisa = frexp(x, &exponent); } long double toFloat() const { return ldexp((long double) mantisa, exponent); } Number operator+(const Number &x) const { Number result; if (x.exponent < exponent) { result.exponent = exponent; result.mantisa = mantisa + ldexp(x.mantisa, x.exponent - exponent); } else { result.exponent = x.exponent; result.mantisa = ldexp(mantisa, exponent - x.exponent) + x.mantisa; } return result; } Number operator-(const Number &x) const { Number result; if (x.exponent < exponent) { result.exponent = exponent; result.mantisa = mantisa - ldexp(x.mantisa, x.exponent - exponent); } else { result.exponent = x.exponent; result.mantisa = ldexp(mantisa, exponent - x.exponent) - x.mantisa; } return result; } Number operator*(const Number &x) const { Number result; result.mantisa = mantisa*x.mantisa; result.exponent = exponent + x.exponent; return result; } Number operator/(const Number &x) const { Number result; result.mantisa = mantisa/x.mantisa; result.exponent = exponent - x.exponent; return result; } Number sqrt() const { Number result; double m = mantisa; if (m < 0) { m = 0; } if (exponent & 1) { result.mantisa = ::sqrt(2*m); } else { result.mantisa = ::sqrt(m); } result.exponent = exponent >> 1; return result; } }; int main() { long double a, b, c; cin >> a >> b >> c; b = -b; Number a1(a), b1(b), c1(c); int s = b >= 0 ? 1 : -1; --b1.exponent; Number p = b1 + Number(s)*(b1*b1 - a1*c1).sqrt(); Number x1 = p/a1, x2 = c1/p; cout << x1.toFloat() << endl; cout << x2.toFloat() << endl; return EXIT_SUCCESS; }