Time Limit: 1 Sec Memory Limit: 32 MB
Submit: 4406 Solved: 2290
[Submit][Status]
Description
你的朋友刚买了一台新电脑,他以前用过的最强大的计算工具是一台袖珍计算器。现在,看着自己的新电脑,他有点失望,因为他更喜欢计算器上的LC显示器。所以,你决定写一个LC显示风格的程序帮他在电脑上显示数字。
Input
输入包括若干行,每一行有两个整数。输入为两个0表示结束,并且此行不被处理。
每行输入的两个整数s和n,满足1<=s<=10且0<=n<=99 999 999,其中n是要被现实的数字,s是n应该显示的大小(放大的倍数)。
Output
输出的数字是LC显示风格的:使用s个“-”表示水平线和s个“|”竖直线,每个数字刚好占据s+2列和2s+3行,所有没有“-”和“|”的空白处请用空格填满。并且每两个数字之间要有一列空格。
每一行输入数字对应上述一组LC显示风格输出。任意两组数字的输出之间用一个空行分割。
Sample Input
2 12345 3 67890 0 0
Sample Output
-- -- -- | | | | | | | | | | | | -- -- -- -- | | | | | | | | | | -- -- -- --- --- --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- | | | | | | | | | | | | | | | | | | | | | | | | --- --- --- ---
HINT
Append Code
#include <stdio.h>
char
a[11][6]= {
"14041"
,
"03030"
,
"13121"
,
"13131"
,
"04130"
,
"12131"
,
"12141"
,
"13030"
,
"14141"
,
"14131"
};
void
prints(
char
c,
int
n)
{
while
(n--)
putchar
(c);
}
int
main()
{
int
k=2;
char
s[20];
int
first=1;
while
(
scanf
(
"%d%s"
,&k,s)==2&&(k||s[0]!=
'0'
))
{
if
(!first)
printf
(
"\n"
);
else
first=0;
for
(
int
i=0; i<5; i++)
{
int
t=1;
for
(
int
j=0; j<k; j++)
{
for
(
int
n=0; s[n]!=0; n++)
{
if
(a[s[n]-
'0'
][i]==
'1'
)
{
if
(j) t=0;
else
{
putchar
(
' '
);
prints(
'-'
,k);
putchar
(
' '
);
if
(s[n+1]!=0)
putchar
(
' '
);
}
}
else
if
(a[s[n]-
'0'
][i]==
'0'
)
{
if
(j) t=0;
else
{
prints(
' '
,k+2);
if
(s[n+1]!=0)
putchar
(
' '
);
}
}
else
{
if
(a[s[n]-
'0'
][i]==
'2'
)
{
putchar
(
'|'
);
prints(
' '
,k+1);
}
else
if
(a[s[n]-
'0'
][i]==
'3'
)
{
prints(
' '
,k+1);
putchar
(
'|'
);
}
else
if
(a[s[n]-
'0'
][i]==
'4'
)
{
putchar
(
'|'
);
prints(
' '
,k);
putchar
(
'|'
);
}
if
(s[n+1]!=0)
putchar
(
' '
);
}
}
if
(t)
putchar
(
'\n'
);
}
}
}
return
0;
}