描述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(); } }