#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; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout << fixed << setprecision(12); ll na, nb; cin >> na >> nb; __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 0; } 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; }