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[][]之类。

浙公网安备 33010602011771号