#include #include using namespace std; using ll = long long; #define rep(i, s, t) for (ll i = s; i < (ll)(t); i++) #define all(x) begin(x), end(x) template bool chmin(T& x, T y) { return x > y ? (x = y, true) : false; } template bool chmax(T& x, T y) { return x < y ? (x = y, true) : false; } struct io_setup { io_setup() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(15); } } io_setup; using mint = atcoder::modint998244353; using i128 = __int128_t; // isqrt long long isqrt(long long n) { if (n <= 0) return 0; long long x = sqrt(n); while ((x + 1) * (x + 1) <= n) x++; while (x * x > n) x--; return x; } void solve() { ll a, b, c; cin >> a >> b >> c; if (a < 0) { a *= -1; b *= -1; c *= -1; } ll x = b * b - 4 * a * c; ll l = 0, r = 0; { ll up = 1e8; ll dw = -1e8; while (up - dw > 1) { ll md = (up + dw) / 2; i128 d = -b - 2 * a * md; if (d < 0 || d * d < x) up = md; else dw = md; } l = up; } { ll up = 1e8; ll dw = -1e8; while (up - dw > 1) { ll md = (up + dw) / 2; i128 d = b + 2 * a * md; if (d > 0 && d * d > x) up = md; else dw = md; } r = up; } ll ans = r - l; ll sqx = isqrt(x); if (sqx * sqx == x && (-b + sqx) % (2 * a) == 0) ans--; cout << ans << '\n'; } int main() { int t = 1; // cin >> t; while (t--) solve(); }