#include using namespace std; #define SZ(x) (int)(x.size()) #define REP(i, n) for(int i=0;i<(n);++i) #define FOR(i, a, b) for(int i=(a);i<(b);++i) #define RREP(i, n) for(int i=(int)(n)-1;i>=0;--i) #define RFOR(i, a, b) for(int i=(int)(b)-1;i>=(a);--i) #define ALL(a) a.begin(),a.end() #define DUMP(x) cerr<<#x<<" = "<<(x)<; using vvi = vector; using vll = vector; using vvll = vector; using P = pair; const double EPS = 1e-8; const ll MOD = 1000000007; const int INF = INT_MAX / 2; const ll LINF = LLONG_MAX / 2; template bool chmax(T1 &a, const T2 &b) { if (a < b) { a = b; return true; } return false; } template bool chmin(T1 &a, const T2 &b) { if (a > b) { a = b; return true; } return false; } template ostream &operator<<(ostream &os, const map &mp); template ostream &operator<<(ostream &os, const vector &v); template ostream &operator<<(ostream &os, const pair &p) { os << "(" << p.first << ":" << p.second << ")"; return os; } template ostream &operator<<(ostream &os, const map &mp) { os << "{"; int a = 0; for (auto &tp : mp) { if (a) os << ", "; a = 1; os << tp; } return os << "}"; } template ostream &operator<<(ostream &os, const vector &v) { os << "["; REP(i, SZ(v)) { if (i) os << ", "; os << v[i]; } return os << "]"; } int main() { cin.tie(0); ios::sync_with_stdio(false); cout << fixed << setprecision(10); double P, Q; cin >> P >> Q; auto check = [&](double x) { return x * x < P + Q * x * log2(x); }; double l = 1, r = 1e30; while (r - l > 1e-5) { double m = (l + r) / 2; (check(m) ? l : r) = m; } cout << l << endl; return 0; }