fn main() { let mut xx = String::new(); std::io::Read::read_to_string(&mut std::io::stdin(), &mut xx).ok(); let xx: Vec = xx.split_whitespace().flat_map(str::parse).collect(); let mut lower = 0.; let mut upper = f64::MAX.sqrt(); let mut n = 0.; while upper - lower > 10f64.powi(-5) && (upper - lower) / lower > 10f64.powi(-5) { n = (lower + upper) / 2.; if n.powi(2) > (xx[1] * n).mul_add(n.log2(), xx[0]) { upper = n; } else { lower = n; } } println!("{n}"); }