import std; double calc(double p, double q) { double lo = 0; double hi = 10^^16; double ans = 0; foreach (_; 0..100) { auto m = (lo + hi) / 2; if (m * m <= p + q * m * log2(m)) { ans = max(ans, m); lo = m; } else hi = m; } return ans; } void main() { double p, q; scan(p, q); writefln("%.10f", calc(p, q)); } void scan(T...)(ref T a) { string[] ss = readln.split; foreach (i, t; T) a[i] = ss[i].to!t; } T read(T)() { return readln.chomp.to!T; } T[] reads(T)() { return readln.split.to!(T[]); } alias readint = read!int; alias readints = reads!int;