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);
		}
		
	}

}

  

posted on 2012-12-05 16:22  夜->  阅读(127)  评论(0编辑  收藏  举报