对m开n次方:
import java.util.*;
import java.math.*;
public class Main{
static BigInteger check(BigInteger n,BigInteger x) {
BigInteger ans=BigInteger.valueOf(1);
BigInteger a=BigInteger.valueOf(1);
for(BigInteger i=BigInteger.ZERO;i.compareTo(n)<0;i=i.add(a)) {
ans=ans.multiply(x);
}
return ans;
}
static BigInteger Get(BigInteger n,BigInteger m) {
BigInteger l=BigInteger.ZERO;
BigInteger a=BigInteger.valueOf(2);
BigInteger b=BigInteger.valueOf(1);
BigInteger r=BigInteger.valueOf(1);
BigInteger mid=BigInteger.ZERO;
while(check(n,r).compareTo(m)<=0) {
l=r;
r=r.multiply(a);
}
while(l.compareTo(r)<=0) {
mid=l.add(r).divide(a);
if(check(n,mid).compareTo(m)<=0) l=mid.add(b);
else r=mid.subtract(b);
}
return r;
}
public static void main(String[]args) {
Scanner sca=new Scanner(System.in);
BigInteger n=sca.nextBigInteger();
BigInteger m=sca.nextBigInteger();
BigInteger res=Get(n,m);
System.out.println(res.toString());
}
}