P5730 【深基5.例10】显示屏

P5730 【深基5.例10】显示屏

链接地址

题目描述

液晶屏上,每个阿拉伯数字都是可以显示成 \(3\times5\) 的点阵的(其中 X 表示亮点,. 表示暗点)。现在给出数字位数(不超过 100)和一串数字,要求输出这些数字在显示屏上的效果。数字的显示方式如同样例输出,注意每个数字之间都有一列间隔。

输入格式

第一行输入一个正整数 n,表示数字的位数。

第二行输入一个长度为 n 的自然数。

输出格式

输出五行,表示显示屏上的数字。

输入输出样例 #1

输入 #1

10
0123456789

输出 #1

XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX
X.X...X...X...X.X.X.X...X.....X.X.X.X.X
X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX
X.X...X.X.....X...X...X.X.X...X.X.X...X
XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX

说明/提示

数据保证,\(1 \leq n \leq 100\)

解题思路

利用数组,构建数字数组,分行输出即可。注意,不要遗漏每个数字之间的一列.

// C++代码
#include <iostream>
#include <vector>

using namespace std;

int n;
string s;
vector<vector<string>> digits = {
    {"XXX", "X.X", "X.X", "X.X", "XXX"}, // 0
    {"..X", "..X", "..X", "..X", "..X"}, // 1
    {"XXX", "..X", "XXX", "X..", "XXX"}, // 2
    {"XXX", "..X", "XXX", "..X", "XXX"}, // 3
    {"X.X", "X.X", "XXX", "..X", "..X"}, // 4
    {"XXX", "X..", "XXX", "..X", "XXX"}, // 5
    {"XXX", "X..", "XXX", "X.X", "XXX"}, // 6
    {"XXX", "..X", "..X", "..X", "..X"}, // 7
    {"XXX", "X.X", "XXX", "X.X", "XXX"}, // 8
    {"XXX", "X.X", "XXX", "..X", "XXX"}  // 9
};

int main()
{
    cin >> n >> s;
    string temp = "";
    for (int row = 0; row < 5; ++row)
    {
        temp = "";
        for (int i = 0; i < n; i++)
        {
            temp += digits[s[i] - '0'][row];
            if (i < n - 1)
                temp += "."; // 数字之间加空格
        }
        cout << temp << endl; // 输出当前行
    }

    return 0;
}
# python实现
def main():
    '''
    n表示数字的位数,int类型
    m表示一个长度为n的自然数,str类型
    '''
    n = int(input())
    s = input().strip()

    # 定义数字的5行表示
    digits = [
        ["XXX", "X.X", "X.X", "X.X", "XXX"],  # 0
        ["..X", "..X", "..X", "..X", "..X"],  # 1
        ["XXX", "..X", "XXX", "X..", "XXX"],  # 2
        ["XXX", "..X", "XXX", "..X", "XXX"],  # 3
        ["X.X", "X.X", "XXX", "..X", "..X"],  # 4
        ["XXX", "X..", "XXX", "..X", "XXX"],  # 5
        ["XXX", "X..", "XXX", "X.X", "XXX"],  # 6
        ["XXX", "..X", "..X", "..X", "..X"],  # 7
        ["XXX", "X.X", "XXX", "X.X", "XXX"],  # 8
        ["XXX", "X.X", "XXX", "..X", "XXX"]   # 9
    ]

    for row in range(5):
        line = []
        for digit in s:
            digit_int = int(digit)
            line.append(digits[digit_int][row])
        # 同空格连接同一行的所有数字部分
        print(".".join(line))

if __name__ == "__main__":
    main()

其他思路

大致都是此种思路,不同是可能使用的是string[][]之类。

posted @ 2026-01-20 00:55  炸酱面配小米酒  阅读(3)  评论(0)    收藏  举报