// #define _GLIBCXX_DEBUG // for STL debug (optional) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long int; using int64 = long long int; template void chmax(T &a, T b) {a = max(a, b);} template void chmin(T &a, T b) {a = min(a, b);} template void chadd(T &a, T b) {a = a + b;} int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; const int INF = 1LL << 29; const ll LONGINF = 1LL << 60; const ll MOD = 1000000007LL; int main() { ll P, Q; scanf("%lld%lld", &P, &Q); long double ub = 1e15, lb = 1; for(int i=0; i<200; i++) { long double mid = (ub + lb) / 2; long double t1 = mid; long double t2 = P/mid + Q*log2l(mid); if(t1 <= t2) lb = mid; else ub = mid; } printf("%.12Lf\n", lb); return 0; }