/* 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
{
{
// your code goes here
}
}
class Solution {
public int pow(int power , int num , int lim){
int ans = 1;
while(power != 0){
if(power%2 == 0){
num = num*num;
power = power/2;
}else{
ans = ans*num;
power = power -1;
}
if(num > lim)return -1;
if(ans > lim)return -1;
}
return ans;
}
public int nthRoot(int n, int m) {
// code here
if(m == 0)return 0;
if(m == 1)return 1;
int ans = -1;
int hi = m ;
int lo = 2;
while(lo <= hi){
int mid = lo + (hi - lo)/2;
int raised = pow(n , mid , m);
if(raised == m){
ans = mid;
break;
}
if(raised == -1){ // exceeded
hi = mid - 1;
}else{ //smaller
lo = mid + 1;
}
}
return ans;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCX0KfQoKY2xhc3MgU29sdXRpb24gewogICAgCiAgICBwdWJsaWMgaW50IHBvdyhpbnQgcG93ZXIgLCBpbnQgbnVtICwgaW50IGxpbSl7CiAgICAgICAgaW50IGFucyA9IDE7CiAgICAgICAgd2hpbGUocG93ZXIgIT0gMCl7CiAgICAgICAgICAgIGlmKHBvd2VyJTIgPT0gMCl7CiAgICAgICAgICAgICAgICBudW0gPSBudW0qbnVtOwogICAgICAgICAgICAgICAgcG93ZXIgPSBwb3dlci8yOwogICAgICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgICAgIGFucyAgPSBhbnMqbnVtOwogICAgICAgICAgICAgICAgcG93ZXIgPSBwb3dlciAtMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZihudW0gPiBsaW0pcmV0dXJuIC0xOwogICAgICAgICAgICBpZihhbnMgPiBsaW0pcmV0dXJuIC0xOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYW5zOwogICAgfQogICAgCiAgICBwdWJsaWMgaW50IG50aFJvb3QoaW50IG4sIGludCBtKSB7CiAgICAgICAgLy8gY29kZSBoZXJlCiAgICAgICAgCiAgICAgICAgaWYobSA9PSAwKXJldHVybiAwOwogICAgICAgIGlmKG0gID09IDEpcmV0dXJuIDE7CiAgICAgICAgCiAgICAgICAgaW50IGFucyA9IC0xOwogICAgICAgIGludCBoaSA9IG0gOyAKICAgICAgICBpbnQgbG8gPSAyOwogICAgICAgIAogICAgICAgIHdoaWxlKGxvIDw9IGhpKXsKICAgICAgICAgICAgCiAgICAgICAgICAgIGludCBtaWQgPSBsbyArIChoaSAtIGxvKS8yOwogICAgICAgICAgICAKICAgICAgICAgICAgaW50IHJhaXNlZCA9IHBvdyhuICwgbWlkICwgbSk7CiAgICAgICAgICAgIGlmKHJhaXNlZCA9PSBtKXsKICAgICAgICAgICAgICAgIGFucyA9IG1pZDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmKHJhaXNlZCA9PSAtMSl7IC8vIGV4Y2VlZGVkCiAgICAgICAgICAgICAgICBoaSA9IG1pZCAtIDE7CiAgICAgICAgICAgIH1lbHNleyAvL3NtYWxsZXIKICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFuczsKICAgIH0KfQ==