<center style="color:rgba(0,0,0,.87);font-family:Lato, 'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:14px;">
</center>
Hello World
时间限制: 1 Sec 内存限制: 128 MB</center>
题目描述
熊熊在学习了C语言的进制转换后,决定用一种更酷炫的方法来输出“Hello World”——每个字母写在一个7*5的格子里,例如H就表示为:“7F 08 08 08 7F”,具体含义请观察样例。
输入
第一行包含一个整数T,代表有T组样例,每个样例第一行是一个数字n代表有n个字符,接下来n行每行5个16进制数字用空格隔开,输入确保每个数字。不要问熊熊这是什么含义,熊熊很忙的说。每行输出正好个字符
输出
对每个样例输出全部的n个字母,每个字母用空格隔开,字母中没有“#”的部分用空格补全,在输出结果后在多输出一个空行。
样例输入
2
11
7F 08 08 08 7F
38 54 54 54 18
00 41 7F 40 00
00 41 7F 40 00
38 44 44 44 38
00 00 00 00 00
3F 40 38 40 3F
38 44 44 44 38
7C 08 04 04 08
00 41 7F 40 00
38 44 44 48 7F
5
14 08 3E 08 14
04 02 01 02 04
40 40 40 40 40
04 02 01 02 04
14 08 3E 08 14
样例输出
# # ## ## # # ## #
# # # # # # # #
# # ### # # ### # # ### # ## # ## #
##### # # # # # # # # # # # ## # # # ##
# # ##### # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # ### ### ### ### # # ### # ### ####
# #
# # # # # #
# # # # # # # # # #
### ###
# # # # # #
# #
#####
提示
输入16进制并转换为10进制:
int t;
scanf("%x",&t);
解题思路
用%x直接转换成十进制数,再求出二进制形式,1输出#,0输出空格,注意格式。具体见代码:
#include <stdio.h>
int str[7][100010], j;
void stem(int n) {
int i = 6, a[7] = {0};
while (n) {
a[i--] = n % 2;
n /= 2;
}
for (i = 6; i >= 0; i--)
str[6 - i][j] = a[i];
j++;
}
int main() {
int t, n, m, i, k;
scanf("%d", &t);
while (t--) {
j = 0;
scanf("%d", &n);
for (i = 0; i < n; i++) {
for (k = 0; k < 5; k++) {
scanf("%x", &m);
stem(m);
}
}
for (i = 0; i < 7; i++) {
for (j = 0; j < 5 * n; j++) {
if (!(j % 5) && j)
printf(" ");
if (str[i][j])
printf("#");
else printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
}