#include #include #define rep(i, a, b) for (ll i = (ll)(a); i < (ll)(b); i++) using namespace atcoder; using namespace std; typedef long long ll; __int128 f(int k) { __int128 x = 1; rep(i, 0, k) x *= 10; return x; } string g(__int128 x) { string s; while (x) { s += (char)('0' + (x % 10)); x /= 10; } reverse(s.begin(), s.end()); return s; } void solve(ll na, ll nb) { if (nb < 0) { na *= -1; nb *= -1; } // double d = (double)na / nb; // cout << d << endl; __int128 a = na, b = nb; a *= f(20); auto check = [&](__int128 x) { if (a >= b * x) return 1; else return 0; }; auto binary = [&]() { __int128 ac = -f(30), wa = +f(30); __int128 mid = ac + (wa - ac) / 2; while (wa - ac > 1) { if (check(mid)) ac = mid; else wa = mid; mid = ac + (wa - ac) / 2; } return ac; }; auto ans_num = binary(); if (ans_num == 0) { cout << "0\n"; return; } if (ans_num < 0) { cout << '-'; ans_num *= -1; } string ans = g(ans_num); while (ans.size() < 20) ans = "0" + ans; string pre, suf; pre = ans; while (suf.size() < 20) { suf += pre.back(); pre.pop_back(); } reverse(suf.begin(), suf.end()); if (pre == "") pre = "0"; cout << pre << '.' << suf << endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(12); // rep(i, -10, 10) rep(j, -10, 10) { // if (j == 0) continue; // cout << i << '/' << j << endl; // solve(i, j); // cout << endl; // } ll a, b; cin >> a >> b; solve(a, b); }