#include <iostream>
#include <cmath>
#include <limits>
using namespace std;
int trimialRoots(double a, double b, double c, double &outX1, double &outX2)
{
static const double epsilon = std::numeric_limits<double>::epsilon();
if (fabs(a) <= (fabs(b) + fabs(c)) * epsilon)
{
if (fabs(b) <= fabs(c) * epsilon)
{
return 0;
}
outX1 = -c / b;
return 1;
}
double delta = b*b - 4*a*c;
if (fabs(delta) <= 2 * (b*b + fabs(4*a*b)) * epsilon)
{
outX1 = - 0.5 * b / a;
return 1;
}
else if (delta < 0)
{
return 0;
}
else
{
double deltaSq = sqrt(delta);
outX1 = - 0.5 * (b - deltaSq) / a;
outX2 = - 0.5 * (b + deltaSq) / a;
return 2;
}
}
int main()
{
double a, b, c;
while (cin >> a >> b >> c)
{
double x1, x2;
cout << "(" << a << ", " << b << ", " << c << "): ";
switch(trimialRoots(a, b, c, x1, x2))
{
case 0:
cout << "No solutions." << endl;
break;
case 1:
cout << "One solution: " << x1 << endl;
break;
case 2:
cout << "Two solutions: x1 = " << x1 << " x2 = " << x2 << endl;
break;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxsaW1pdHM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IHRyaW1pYWxSb290cyhkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgJm91dFgxLCBkb3VibGUgJm91dFgyKQp7CglzdGF0aWMgY29uc3QgZG91YmxlIGVwc2lsb24gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OmVwc2lsb24oKTsKCWlmIChmYWJzKGEpIDw9IChmYWJzKGIpICsgZmFicyhjKSkgKiBlcHNpbG9uKQoJewoJCWlmIChmYWJzKGIpIDw9IGZhYnMoYykgKiBlcHNpbG9uKQoJCXsKCQkJcmV0dXJuIDA7CgkJfQoJCW91dFgxID0gLWMgLyBiOwoJCXJldHVybiAxOwoJfQoJZG91YmxlIGRlbHRhID0gYipiIC0gNCphKmM7CglpZiAoZmFicyhkZWx0YSkgPD0gMiAqIChiKmIgKyBmYWJzKDQqYSpiKSkgKiBlcHNpbG9uKQoJewoJCW91dFgxID0gLSAwLjUgKiBiIC8gYTsKCQlyZXR1cm4gMTsKCX0KCWVsc2UgaWYgKGRlbHRhIDwgMCkKCXsKCQlyZXR1cm4gMDsKCX0KCWVsc2UKCXsKCQlkb3VibGUgIGRlbHRhU3EgPSBzcXJ0KGRlbHRhKTsKCQlvdXRYMSA9IC0gMC41ICogKGIgLSBkZWx0YVNxKSAvIGE7CgkJb3V0WDIgPSAtIDAuNSAqIChiICsgZGVsdGFTcSkgLyBhOwoJCXJldHVybiAyOwoJfQp9CgppbnQgbWFpbigpCnsKCWRvdWJsZSBhLCBiLCBjOwoKCXdoaWxlIChjaW4gPj4gYSA+PiBiID4+IGMpCgl7CgkJZG91YmxlIHgxLCB4MjsKCQljb3V0IDw8ICIoIiA8PCBhIDw8ICIsICIgPDwgYiA8PCAiLCAiIDw8IGMgPDwgIik6ICI7CgkJc3dpdGNoKHRyaW1pYWxSb290cyhhLCBiLCBjLCB4MSwgeDIpKQoJCXsKCQljYXNlIDA6CgkJCWNvdXQgPDwgIk5vIHNvbHV0aW9ucy4iIDw8IGVuZGw7CgkJCWJyZWFrOwoJCWNhc2UgMToKCQkJY291dCA8PCAiT25lIHNvbHV0aW9uOiAiIDw8IHgxIDw8IGVuZGw7CgkJCWJyZWFrOwoJCWNhc2UgMjoKCQkJY291dCA8PCAiVHdvIHNvbHV0aW9uczogeDEgPSAiIDw8IHgxIDw8ICIgeDIgPSAiIDw8IHgyIDw8IGVuZGw7CgkJCWJyZWFrOwoJCX0KCX0KCXJldHVybiAwOwp9Cg==
(0, 1, 2): One solution: -2
(0, 0, 2): No solutions.
(1, 0, 1): No solutions.
(1, 0, -1): Two solutions: x1 = 1 x2 = -1
(1, 2, -1.25): Two solutions: x1 = 0.5 x2 = -2.5
(1, 2, 1): One solution: -1
(-1, 2, -1): One solution: 1
(2, 4, -2): Two solutions: x1 = 0.414214 x2 = -2.41421
(2, -4, -2): Two solutions: x1 = 2.41421 x2 = -0.414214