[NICA #3] 数字显示屏
题目描述
有一块显示屏,显示着 { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 } \{\verb!0!,\verb!1!,\verb!2!,\verb!3!,\verb!4!,\verb!5!,\verb!6!,\verb!7!,\verb!8!,\verb!9!\} {0,1,2,3,4,5,6,7,8,9} 上的数字。每个数字都由如下图所示的字符画组成:
现在给定显示屏上显示的内容,请输出上面显示的数字串。
输入格式
第一行有一个正整数 n n n,表示显示屏上显示的数字的个数。
接下来 5 5 5 行描述显示屏。显示屏的宽度为 5 5 5,长度为 4 n − 1 4n-1 4n−1,上面显示的内容是数字串里的数字拼接起来的像素点。请参考输入样例理解输入格式。
输出格式
输出共一行 n n n 个数字,表示显示屏上显示的数字。
样例 #1
样例输入 #1
10
***.***.***.***.*.*.***.***...*.***.***
..*.*.*.*.*.*...*.*.*.....*...*...*.*.*
***.***.*.*.***.***.***...*...*.***.***
*.....*.*.*...*...*.*.*...*...*...*.*.*
***.***.***.***...*.***...*...*.***.***
样例输出 #1
2905467138
样例 #2
样例输入 #2
20
***.***.***.***.***.***.***.***...*.***.***.***.***.*.*.***.***.***.***.***.***
..*.*.*.*.....*.*.*.*.*.*...*.....*.*...*.*.*.*.*.*.*.*.*.*.*.....*.*.*.*.*.*..
..*.***.***.***.*.*.***.***.***...*.***.***.***.***.***.***.***.***.***.*.*.***
..*...*.*.*...*.*.*...*.*.*.*.*...*...*.*.*...*...*...*...*...*...*...*.*.*...*
..*.***.***.***.***.***.***.***...*.***.***.***.***...*.***.***.***.***.***.***
样例输出 #2
79630966158994953905
提示
数据范围及约定
保证输入数据合法。
对于全部数据, 1 ≤ n ≤ 1 0 4 1\le n\le 10^4 1≤n≤104。
解析
#include <iostream>
#include <algorithm>
#include <vector>
#include <cmath>
//#define ll long long
typedef long long ll;
using namespace std;
int main(){
//输入输出加速代码
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll n, cnt = 0;
cin >> n;
vector<vector<char>> c(6, vector<char>(400001));
for (int i = 0; i < 5; i++){
for (int j = 0; j < 4 * n - 1; j++){
cin >> c[i][j];
}
}
for (int j = 0; j < 4 * n - 1 - 2; j += 4){
cnt = 0;
for (int i = 0; i < 5; i++){
for (int k = j; k < j + 3; k++){
if (c[i][k] == '*'){
cnt++;
}
}
}
if (cnt == 5) cout << 1;
else if (cnt == 9) cout << 4;
else if (cnt == 7) cout << 7;
else if (cnt == 13) cout << 8;
else if (cnt == 12){
if (c[2][j + 1] == '.') cout << 0;
else if (c[1][j + 2] == '.') cout << 6;
else cout << 9;
}
else if (cnt == 11){
if (c[1][j] == '.' && c[3][j] == '*') cout << 2;
else if (c[1][j] == '.' && c[3][j] == '.') cout << 3;
else cout << 5;
}
}
return 0;
}