描述java
輸入一個2進制的數,要求輸出該2進制數的16進製表示。
在16進制的表示中,A-F表示10-15測試
輸入spa
第1行是測試數據的組數n,後面跟着n行輸入。每組測試數據佔1行,包括一個以0和1組成的字符串,字符串長度至少是1,至可能是10000code
輸出ip
n行,每行輸出對應一個輸入。ci
樣例輸入字符串
2 100000 111
樣例輸出table
20 7
心得: 由於輸入是最長可達10000位的二進制字符串, 因此採用BigInteger.class
注意: BigInteger 的初始化, 其參數是字符串;import
BigInteger 是 immutable 的, 因此計算以後要賦新值;
import java.math.BigInteger; import java.util.Scanner; public class OpenJudge2798 { public static void main(String[] args) { Scanner cin = new Scanner(System.in); final int n = cin.nextInt(); final BigInteger TWO = new BigInteger("2"); BigInteger[] base = new BigInteger[10000]; base[0] = BigInteger.ONE; for (int i = 1; i < 10000; i++) { base[i] = base[i - 1].multiply(TWO); } for (int i = 0; i < n; i++) { String binary = cin.next(); BigInteger sum = BigInteger.ZERO; int k = binary.length(); for (int j = 0; j < binary.length(); j++) { k--; char ch = binary.charAt(j); if (ch == '1') { sum = sum.add(base[k]); } } System.out.println(sum.toString(16).toUpperCase()); } cin.close(); } }