/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
private static int check(long mid, int n, long m) {
long ans = 1;
for (int i = 1; i <= n; i++) {
if (mid > m / ans) {
return 2;
}
ans *= mid;
}
if (ans == m) {
return 1;
}
return 0;
}
public static long NthRoot(int n, long m) {
if (m == 0 || m == 1) {
return m;
}
if (n == 1) {
return m;
}
long low = 1;
long high = m;
while (low <= high) {
long mid = low + (high - low) / 2;
int val = check(mid, n, m);
if (val == 1) {
return mid;
} else if (val == 0) {
low = mid + 1;
} else {
high = mid - 1;
}
}
return -1;
}
public static void main
(String[] args
) { int n1 = 3;
long m1 = 27;
System.
out.
println(n1
+ "th root of " + m1
+ " is: " + NthRoot
(n1, m1
));
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXByaXZhdGUgc3RhdGljIGludCBjaGVjayhsb25nIG1pZCwgaW50IG4sIGxvbmcgbSkgewogICAgICAgIGxvbmcgYW5zID0gMTsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICAgICAgaWYgKG1pZCA+IG0gLyBhbnMpIHsKICAgICAgICAgICAgICAgIHJldHVybiAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGFucyAqPSBtaWQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoYW5zID09IG0pIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgbG9uZyBOdGhSb290KGludCBuLCBsb25nIG0pIHsKICAgICAgICBpZiAobSA9PSAwIHx8IG0gPT0gMSkgewogICAgICAgICAgICByZXR1cm4gbTsKICAgICAgICB9CiAgICAgICAgaWYgKG4gPT0gMSkgewogICAgICAgICAgICByZXR1cm4gbTsKICAgICAgICB9CgogICAgICAgIGxvbmcgbG93ID0gMTsKICAgICAgICBsb25nIGhpZ2ggPSBtOwoKICAgICAgICB3aGlsZSAobG93IDw9IGhpZ2gpIHsKICAgICAgICAgICAgbG9uZyBtaWQgPSBsb3cgKyAoaGlnaCAtIGxvdykgLyAyOwogICAgICAgICAgICBpbnQgdmFsID0gY2hlY2sobWlkLCBuLCBtKTsKCiAgICAgICAgICAgIGlmICh2YWwgPT0gMSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG1pZDsKICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwgPT0gMCkgewogICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gLTE7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIGludCBuMSA9IDM7CiAgICAgICAgbG9uZyBtMSA9IDI3OwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihuMSArICJ0aCByb290IG9mICIgKyBtMSArICIgaXM6ICIgKyBOdGhSb290KG4xLCBtMSkpOwoKICAgIH0KfQ==