1284 喜羊羊的新年礼物
1284 喜羊羊的新年礼物
题目描述
新年到了,村长需要一个三位数字显示器来装饰羊村,
显示的数字0~9如下图所示
喜羊羊自告奋勇地接了任务,打算把它作为新年礼物送给羊村,
现在却发现不是那么简单,你能帮助他吗?
输入要求
一个小于1000的非负整数。
输出要求
输出如描述所示图的数字构成的对应于输入的数字,
数字间空一列。
测试数据
508
555 000 888
5 0 0 8 8
555 0 0 888
5 0 0 8 8
555 000 888
AC代码
这题比较坑,有两点要注意,
- 比如说输入9那么就要输出009,输入19,要输出019,
- 还要就要注意每行数字后面不要输出多余的空格
感觉自己写的比较蠢,如果有大佬有更好的方法,也请告诉我
#include <bits/stdc++.h>
using namespace std;
int main() {
string s[5];
s[0]="000 1 2223334 4555666777888999";
s[1]="0 011 2 34 45 6 78 89 9";
s[2]="0 0 1 222333444555666 7888999";
s[3]="0 0 1 2 3 4 56 6 7 8 8 9";
s[4]="000111222333 45556667 888999";
int n,myend;
string in;
cin>>in;
if(in.size()==1) in="00"+in; //各位数
else if(in.size()==2)in="0"+in;//十位数
for(int k=0; k<5; k++) {
for(int i=0; i<in.size()-1; i++) {
n=in[i]-'0';
for(int j=3*n; j<3*n+3; j++) cout<<s[k][j];
cout<<" ";
}
//为了使数字后面没有空格
n=in[in.size()-1]-'0';
{
for(int j=3*n+2; j>=3*n; j--) {
if(s[k][j]!=' ') {
myend=j;
break;
}
}
for(int j=3*n; j<=myend; j++) cout<<s[k][j];
}
cout<<endl;
}
return 0;
}