-
时间限制:
- 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>
using
namespace
std;
char
six[] =
"0123456789ABCDEF"
;
int
four[] = {1,2,4,8};
char
change(
char
*tmp,
int
num){
int
i;
char
ret = 0;
for
(i=0; i<num; i++){
ret += (tmp[i]-
'0'
) * four[num-i-1];
}
return
six[ret];
}
int
main(){
int
n, len, i;
cin >> n;
char
num[10010];
while
(n-- > 0){
cin >> num;
len = strlen(num), i = 0;
while
(len > 0){
int
tmp = len % 4;
if
(tmp == 0)
tmp = 4;
cout << change(&num[i],tmp);
len -= tmp;
i += tmp;
}
cout << endl;
}
}
(2)、解题思路:略
(3)、可能出错:略