UVa 706 / POJ 1102 LCD Display (模拟)2014-07-12 synapse7 706 - LCD DisplayTime limit: 3.000 secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=647http://poj.org/problem?id=1102A friend of you has just bought a new computer. Until now, the most powerful computer he ever used has been a pocket calculator. Now, looking at his new computer, he is a bit disappointed, because he liked the LC-display of his calculator so much. So you decide to write a program that displays numbers in an LC-display-like style on his computer.
Input
The input file contains several lines, one for each number to be displayed. Each line contains two integers
s,
n (

), where
n is the number to be displayed and
s is the size in which it shall be displayed.The input file will be terminated by a line containing two zeros. This line should not be processed.
Output
Output the numbers given in the input file in an LC-display-style using
s ``
-"" signs for the horizontal segments and
s ``
|"" signs for the vertical ones. Each digit occupies exactly
s+2 columns and 2
s+3 rows. (Be sure to fill all the white space occupied by the digits with blanks, also for the last digit.) There has to be exactly one column of blanks between two digits.Output a blank line after each number. (You will find a sample of each digit in the sample output.)
Sample Input
2 123453 678900 0
Sample Output
-- ----||| || |||| || | -- -- -- --| | ||| | | |||-- ------- --- --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- | | | | | | | || | | | | | | || | | | | | | | --- --- --- ---
先写个常量字符串数组~完整代码:
/*UVa: 0.032s*//*POJ: 0ms,160KB*/#include <cstdio>#include <cstring>const char code[5][31] ={" - -- ----- ","| ||||| ||||| || |"," ----- -- ","| ||||||| ||| ||"," - -- -- -- ",};int s;char n[20];inline void print(int t , int len){for (int i = 0; i < len; i++){int a = n[i] & 15;if (i) putchar(" ");putchar(code[t][a * 3]);for (int j = 0; j < s; j++)putchar(code[t][a * 3 + 1]);putchar(code[t][a * 3 + 2]);}putchar("
");}int main(void){int len;while (scanf("%d%s", &s, n), s){len = strlen(n);for (int i = 0; i < 5; i++)///从上往下打印{if (i == 1 || i == 3)for (int j = 0; j < s; j++)print(i, len);elseprint(i, len);}putchar("
");}return 0;}