#include <string>
#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

string numbers[5][10]={
" - ", "   ", " - ", " - ", "   ", " - ", " - ", " - ", " - ", " - ",
"| |", "  |", "  |", "  |", "| |", "|  ", "|  ", "  |", "| |", "| |", 
"   ", "   ", " - ", " - ", " - ", " - ", " - ", "   ", " - ", " - ",
"| |", "  |", "|  ", "  |", "  |", "  |", "| |", "  |", "| |", "  |", 
" - ", "   ", " - ", " - ", "   ", " - ", " - ", "   ", " - ", " - ",
};

const int MAX_LEN=10;
int num[MAX_LEN];

//return number length
int fill_num(int n)
{
    memset(num, 0, sizeof(num));
    int i=0;
    do
    {
        num[i++]=n%10;
        n/=10;
    }while(n!=0);

reverse(num, num+i);
    return i;

}
void cout_a_row(int s, string n)
{
    cout<<n[0];
    for(int i=0;i<s;i++)
        cout<<n[1];
    cout<<n[2];
}

void print_num(int s, int n)
{

int len=fill_num(n);
    //cout<<len<<endl;

for(int row=0;row<(3+2*s);row++)
    {
        //输出各个数字的一行
        for(int i=0;i<len;i++)
        {
            int real_row;
            //head
            if(row==0)
            {
                real_row=0;
            }
            //head-mid
            if(row>0 && row<(3+2*s)/2)
            {
           
                real_row=1;
            }
            //mid
            if(row==(3+2*s)/2)
            {
                real_row=2;
            }
            if(row>(3+2*s)/2 && row<(3+2*s-1))
            {
                real_row=3;
            }
            //tail
            if(row==(3+2*s-1))
            {
                real_row=4;
            }
           
            cout_a_row(s, numbers[real_row][num[i]]);
            (i==len-1)?(cout<<endl):(cout<<" ");
        }
    }
    cout<<endl;
}

int main()
{
#if 0
    print_num(1, 1234567890);
    print_num(3, 1234567890);
    print_num(5, 1234567890);
    print_num(7, 1234567890);
#endif
    int s,num;
    while(cin>>s>>num, s||num)
    {
        print_num(s, num);
    }
    return 0;
}

PC/UVa 题号: 110104/706 LC-Display (液晶显示屏)题解的更多相关文章

  1. PC/UVa 题号: 110106/10033 Interpreter (解释器)题解 c语言版

    , '\n'); #include<cstdio> #include<iostream> #include<string> #include<algorith ...

  2. PC/UVa 题号: 110105/10267 Graphical Editor (图形化编辑器)题解

    #include<cstdio> #include<iostream> #include<string> #include<algorithm> #in ...

  3. PC/UVa 题号: 110101/100 The 3n+1 problem (3n+1 问题)

     The 3n + 1 problem  Background Problems in Computer Science are often classified as belonging to a ...

  4. uva题库爬取

    每次进uva都慢的要死,而且一步一步找到自己的那个题目简直要命. 于是,我想到做一个爬取uva题库,记录一下其中遇到的问题. 1.uva题目的链接是一个外部的,想要获取https资源,会报出SNIMi ...

  5. 天大acm 题号1002 Maya Calendar

    Description 上周末,M.A. Ya教授对古老的玛雅有了一个重大发现.从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有365天的叫做Haab的历法.这 个Haab历 ...

  6. The Trip PC/UVa IDs: 110103/10137, Popularity: B, Success rate: average Level: 1

    #include<cstdio> #include<iostream> #include<string> #include<algorithm> #in ...

  7. hdu&&poj搜索题题号

    搜索 hdu1067 哈希 hdu1401 双向搜索 hdu1430 哈希 hdu1667 跌搜+启发式函数 hdu1685 启发式搜索 hdu1813 启发式搜索 hdu1885 状态压缩搜索 hd ...

  8. [Swust OJ 666]--初来乍到(题号都这么溜~~,递归,找规律)

    题目链接:http://acm.swust.edu.cn/problem/0666/ Time limit(ms): 1000 Memory limit(kb): 65535   Descriptio ...

  9. PAT DFS,BFS,Dijkstra 题号

    为什么要分类刷题: 因为刷⼀道算法题需要花⼀两个⼩时甚⾄半天,平时我们还要上课做别的事情,你在⼀段时间内刷算法如果只按照顺序,可能今天遇到了⼀道最短路径的题⽬,弄了半天好不容易看懂了别⼈的代码,以为⾃ ...

随机推荐

  1. Android Configuration change引发的问题及解决方法(转)

    之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什 ...

  2. apache开源项目--Syncope

    Apache Syncope is an Open Source system for managing digital identities in enterprise environments, ...

  3. Java [Leetcode 125]Valid Palindrome

    题目描述: Given a string, determine if it is a palindrome, considering only alphanumeric characters and ...

  4. 【JSP】<meta>标签用法

    转载自:http://blog.sina.com.cn/s/blog_65c74cce0102v39z.html  非常感谢这位博主,急着用,改日再细细品味重新整理这篇博文. http-equiv M ...

  5. android adt与android sdk有什么关系,他们在开发中各起到什么作用

    ADT(Android Development Tools):目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级 ...

  6. 完美完全卸载Oracle 11g数据库

    Oracle 11g可在开始菜单中卸载,然后同时需要删除注册表中相关内容. 操作系统:windows10专业版. 卸载步骤: 1.停用oracle服务:进入计算机管理,在服务中,找到oracle开头的 ...

  7. hdu 3746 Cyclic Nacklace(KMP)

    题意: 求最少需要在后面补几个字符能凑成两个循环. 分析: 最小循环节的应用,i-next[i]为最小循环节. #include <map> #include <set> #i ...

  8. Linux操作系统上用数据泵导库

    1.在Linux上 创建物理目录dp_dir,存放数据库.dmp文件: 用root用户登录,切换到oracle用户,用oralce身份创建物理目录如下: [root@server36 oracle]# ...

  9. 【数据结构和算法】 O(1)时间取得栈中的最大 / 最小元素值

    常数时间取得栈中的元素最大值和最小值,我们可以想到当push的时候比较一下,如果待push元素值小于栈顶元素,则更新min值,最大值亦然. 这样有个问题就是当pop的时候,就没了最大最小值. 于是上网 ...

  10. C++小游戏:扑克牌21点

    21点扑克牌游戏: 程序说明:该程序是模拟21点扑克牌游戏,玩家最多可以要5张牌,但是如果牌的点数之和超过21点,则自动出局,在不超过21点的情况下,玩家与庄家比牌的大小,大者为赢家 程序片段分析: ...