- 时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
- 输入一个2进制的数,要求输出该2进制数的16进制表示。
在16进制的表示中,A-F表示10-15 输入 - 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个以0和1组成的字符串,字符串长度至少是1,至多是10000 输出
- n行,每行输出对应一个输入。 样例输入
-
2
100000
111
样例输出 -
20
7
(1)、源代码:
#include<iostream>
#include<cstring>
usingnamespacestd;
charsix[] ="0123456789ABCDEF";
intfour[] = {1,2,4,8};
charchange(char*tmp,intnum){
inti;
charret = 0;
for(i=0; i<num; i++){
ret += (tmp[i]-'0') * four[num-i-1];
}
returnsix[ret];
}
intmain(){
intn, len, i;
cin >> n;
charnum[10010];
while(n-- > 0){
cin >> num;
len = strlen(num), i = 0;
while(len > 0){
inttmp = len % 4;
if(tmp == 0)
tmp = 4;
cout << change(&num[i],tmp);
len -= tmp;
i += tmp;
}
cout << endl;
}
}
(2)、解题思路:略
(3)、可能出错:略