#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion decimal e = 1; for (var i = 0; i < 12; i++) e /= 10; decimal Sqrt(decimal x) { decimal l = 0; decimal r = 1000000000001; for (var i = 0; i < 160; i++) { var mid = (l + r) / 2; if (mid * mid <= x) l = mid; else r = mid; } return l; } var a = I(); var b = I(); var c = I(); if (a < 0) (a, b, c) = (-a, -b, -c); var d = b * b - a * c * 4; var sqrtd = Sqrt(d); var dx1 = (-b - sqrtd) / (a * 2); var dx2 = (-b + sqrtd) / (a * 2); var x1 = (long)Math.Ceiling(dx1 + e); var x2 = (long)Math.Floor(dx2 - e); var ans = x2 - x1 + 1; if (ans < 0) ans = 0; Console.WriteLine(ans);