http://poj.org/problem?id=2109
代码:
import java.util.*; import java.math.BigInteger; import java.math.BigDecimal; ; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n; BigInteger m,l,r,mid; BigInteger k2=BigInteger.ONE.add(BigInteger.ONE); while(in.hasNext()){ n=in.nextInt(); m=in.nextBigInteger(); l=BigInteger.ONE; r=m; while(l.compareTo(r)<0){ mid=l.add(r).divide(k2); int tmp=mid.pow(n).compareTo(m); if(tmp==0){ r=mid;break; } if(tmp<0){ l=mid.add(BigInteger.ONE); } else{ r=mid.subtract(BigInteger.ONE); } } System.out.println(r); } } }