const INF: f64 = (1usize << 60) as f64; fn main() { let mut pq = String::new(); std::io::stdin().read_line(&mut pq).ok(); let pq: Vec = pq.trim().split_whitespace().map(|s| s.parse().unwrap()).collect(); let p = pq[0]; let q = pq[1]; let mut upper = INF; let mut lower = 1.; for _ in 0..100 { let middle = (upper + lower) / 2.; if q * middle * middle.log2() + p >= middle * middle { lower = middle; } else { upper = middle; } } println!("{}", upper); }