<center style="color&#58;rgba&#40;0&#44;0&#44;0&#44;&#46;87&#41;&#59;font&#45;family&#58;Lato&#44; &#39;Helvetica Neue&#39;&#44; Arial&#44; Helvetica&#44; sans&#45;serif&#59;font&#45;size&#58;14px&#59;">

Hello World

时间限制: 1 Sec   内存限制: 128 MB
</center>

题目描述

熊熊在学习了C语言的进制转换后,决定用一种更酷炫的方法来输出“Hello World”——每个字母写在一个7*5的格子里,例如H就表示为:“7F 08 08 08 7F”,具体含义请观察样例。

输入

第一行包含一个整数T,代表有T组样例,每个样例第一行是一个数字n代表有n个字符,接下来n行每行516进制数字用空格隔开,输入确保每个数字。不要问熊熊这是什么含义,熊熊很忙的说。每行输出正好个字符

输出

对每个样例输出全部的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;
}