和题解差不多的打表思路,看测试点没有什么问题
#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main(void){
string I, II, III, IV, V;
string a = "XXX";
string b = "..X";
string c = "X.X";
string d = "X..";
char dot = '.';
int n;
cin >> n;
getchar();
string s;
getline(cin, s);
for(int i = 0;i < n;i++){
int num = s[i] - '0';
if(num == 0){
I += a;
II += c;
III += c;
IV += c;
V += a;
}
else if(num == 1){
I += b;
II += b;
III += b;
IV += b;
V += b;
}
else if(num == 2){
I += a;
II += b;
III += a;
IV += d;
V += a;
}
else if(num == 3){
I += a;
II += b;
III += a;
IV += b;
V += a;
}
else if(num == 4){
I += c;
II += c;
III += a;
IV += b;
V += b;
}
else if(num == 5){
I += a;
II += d;
III += a;
IV += b;
V += a;
}
else if(num == 6){
I += a;
II += d;
III += a;
IV += c;
V += a;
}
else if(num == 7){
I += a;
II += b;
III += b;
IV += b;
V += b;
}
else if(num == 8){
I += a;
II += c;
III += a;
IV += c;
V += a;
}
else if(num == 9){
I += a;
II += c;
III += a;
IV += b;
V += a;
}
if(i != n - 1)
{
I += dot;
II += dot;
III += dot;
IV += dot;
V += dot;
}
}
cout << I << endl;
cout << II << endl;
cout << III << endl;
cout << IV << endl;
cout << V << endl;
return 0;
}
输入 6 114514
输出为下
..X...X.X.X.XXX...X.X.X
..X...X.X.X.X.....X.X.X
..X...X.XXX.XXX...X.XXX
..X...X...X...X...X...X
..X...X...X.XXX...X...X