#nullable enable var input = Console.ReadLine()!.Split(' '); var n = long.Parse(input[0]); var m = int.Parse(input[1]); if (n == 1) { Console.WriteLine("NaN"); return; } int SolveN(long s) { var i = 1; var l = s; while (true) { while (i < l) { m--; if (m == 0) return i; i++; } i++; l += s; } } int SolveF(decimal s) { var i = 1; var l = s; while (true) { var k = (long)l; while (i < k) { m--; if (m == 0) return i; i++; } while (i < l) i++; l += s; } } int Solve() { for (var i = 1L; i * i <= n; i++) if (i * i == n) return SolveN(i); decimal l = 0; decimal r = n; for (var i = 0; i < 160; i++) { var mid = (l + r) / 2; if (mid * mid < n) l = mid; else r = mid; } return SolveF(l); } Console.WriteLine(Solve());