本文主要是介绍POJ 2109 解题报告,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这道题我用的是Java里面的BigInteger(看discuss直接用double也能过)。值得注意的是,整数k不一定存在,这时需要向下取整,与题目描述不符。
thestoryofsnow | 2109 | Accepted | 3212K | 266MS | Java | 868B |
import java.io.*;
import java.util.*;
import java.math.BigInteger;public class Main {public static void main(String args[]){final BigInteger MAXK = BigInteger.valueOf(1000000000);final BigInteger ONE = BigInteger.valueOf(1);final BigInteger TWO = BigInteger.valueOf(2);Scanner cin = new Scanner(System.in);Integer a;BigInteger b;while (cin.hasNext()){a = cin.nextInt();b = cin.nextBigInteger();BigInteger low = ONE, high = b.min(MAXK), mid, p;while (low.compareTo(high) <= 0){mid = low.add(high).divide(TWO);int cmp = mid.pow(a).compareTo(b);if (cmp == 0){high = mid;break;}else if (cmp > 0){high = mid.subtract(ONE);}else{low = mid.add(ONE);}}System.out.println(high);}}
}
这篇关于POJ 2109 解题报告的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!