蒜头君有一块数码管显示屏,只能显示数字。
每个数字的显示如下。
每 7 个数码管用来显示一个数字。
每个数字对应的输出如下。
当然为了看起来更形象,可以把数字放大输出,比如放大两倍每个数字对应如下
输入格式
输入两个整数 k(1≤k≤10,0≤n≤99999999)k(1≤k≤10,0≤n≤99999999) ,分别表达放大的倍数和需要输出的数字。
输出格式
输出数码管显示的数字,数字每一位之间用一列空格隔开。
样例输入
2 12345
样例输出
3 67890
样例输出
代码:
#include<iostream>
#include<algorithm>
using namespace std;
void showRow(int k,string n,int len,int flag){
for(int i=0;i<len;i++){
cout<<" ";
char c;
// 最上面一行
if(flag == 0 && (n[i]=='2' || n[i]=='3' || n[i]=='5' || n[i]=='6' || n[i]=='7' || n[i]=='8' || n[i]=='9' || n[i]=='0'))
c = '-';
// 中间一行
else if(flag == 2 && (n[i]=='2' || n[i]=='3' || n[i]=='4' || n[i]=='5' || n[i]=='6' || n[i]=='8' || n[i]=='9'))
c = '-';
// 最下面一行
else if(flag == 4 && (n[i]=='2' || n[i]=='3' || n[i]=='5' || n[i]=='6' || n[i]=='8' || n[i]=='9' || n[i]=='0'))
c = '-';
else
c = ' ';
for(int j=0;j<k;j++)
cout<<c;
cout<<" ";
if(i!=len-1)
cout<<" ";
}
cout<<endl;
}
// 竖
void showLine(int k,string n,int len,int flag){
for(int line = 0;line<k;line++){
for(int i=0;i<len;i++){
// 上面的竖前面的 |
if(flag == 1 && (n[i]=='4' || n[i]=='5' || n[i]=='6' || n[i]=='8' || n[i]=='9' || n[i]=='0'))
cout<<"|";
// 下面的竖前面的 |
else if(flag == 3 && (n[i]=='2' || n[i]=='6' || n[i]=='8' || n[i]=='0'))
cout<<"|";
else
cout<<" ";
for(int j=0;j<k;j++)
cout<<" ";
// 上面的竖后面的 |
if(flag == 1 && (n[i]=='1' || n[i]=='2' || n[i]=='3' || n[i]=='4' || n[i]=='7' || n[i]=='8' || n[i]=='9' || n[i]=='0'))
cout<<"|";
// 下面的竖后面的 |
else if(flag == 3 && (n[i]=='1' ||n[i]=='3' || n[i]=='4' || n[i]=='5' || n[i]=='6' || n[i]=='7' || n[i]=='8' || n[i]=='9' || n[i]=='0'))
cout<<"|";
else
cout<<" ";
if(i!=len-1)
cout<<" ";
}
cout<<endl;
}
}
int main(){
int k;
string n;
cin>>k>>n;
int len = n.length();
for(int i=0;i<5;i++){ // 五行的结构
if(i%2==0)
showRow(k,n,len,i);
else
showLine(k,n,len,i);
}
return 0;
}