【深基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$。

#include <bits/stdc++.h> 
#define For(x) for (int i = 0; i < x; i++)
using namespace std;
void solve() {
    vector<string> s;
    //0:0-3 1:4-7
    s.push_back("XXX...X.XXX.XXX.X.X.XXX.XXX.XXX.XXX.XXX");
    s.push_back("X.X...X...X...X.X.X.X...X.....X.X.X.X.X");
    s.push_back("X.X...X.XXX.XXX.XXX.XXX.XXX...X.XXX.XXX");
    s.push_back("X.X...X.X.....X...X...X.X.X...X.X.X...X");
    s.push_back("XXX...X.XXX.XXX...X.XXX.XXX...X.XXX.XXX");
    int n,t,nums[999];
    // cout << s[0].substr(4,3) << endl;
    string numstr;
    cin >> n;
    cin >> numstr;
    // cout << sizeof(s[0]);
    For(n) nums[i]=numstr[i]-'0';
    for(int i=0; i<5; i++) {
        for(int j=0; j<n; j++) {
            cout << s[i].substr(nums[j]*4,3);
            if(j!=n-1) cout << ".";
        }
        cout << endl;
    }
}
int main() {
    int t=1;
    // cin >> t;
    while (t--) solve();

}
最后修改:2025 年 01 月 31 日 10 : 47 AM
如果觉得我的文章对你有用,请随意赞赏