H : 没错,就让你做A+B

来源:互联网 发布:重庆医院网络主管招聘 编辑:程序博客网 时间:2024/04/27 23:08

题目地址:http://oj.nyist.me/OJ/contest_problem.php?cid=1036&pid=7

题目描述

什么?听说你把上一道A+B做出来了!这么厉害的吗,那我就再出一道A+B的题考考你!
现在给你一个A和一个B,输出A+B的值。

但是为了增加难度,这个式子你要用图形表示,'0'到'9'的表示如下图所示(还有'+','-','='符号)


##### ....# ##### ##### #...# ##### ##### ##### ##### ##### ..... ..... .....#...# ....# ....# ....# #...# #.... #.... ....# #...# #...# ..#.. ..... .....#...# ....# ....# ....# #...# #.... #.... ....# #...# #...# ..#.. ..... ######...# ....# ##### ##### ##### ##### ##### ....# ##### ##### ##### ##### .....#...# ....# #.... ....# ....# ....# #...# ....# #...# ....# ..#.. ..... ######...# ....# #.... ....# ....# ....# #...# ....# #...# ....# ..#.. ..... .....##### ....# ##### ##### ....# ##### ##### ....# ##### ##### ..... ..... .....


输入

T组输入,接下来的T行(T<300),每一行输入A,B(0<=|A|,|B|<=1000000000)

输出

按照输出要求,输出该等式A+B=?。(能省略的正号,应省略)(两个图形之间用一列'.'隔开)(自己看输出理解题意)
两个输出之间输出一个空行。

样例输入

复制
21 -11193 257

样例输出

复制
....#...........#.....#.................#.#####....#...........#.....#.................#.#...#....#...........#.....#.#####...........#.#...#....#.#####.....#.....#.......#####.....#.#...#....#...........#.....#.#####...........#.#...#....#...........#.....#.................#.#...#....#...........#.....#.................#.#####....#.#####.#####.......#####.#####.#####.......#...#.#####.#####....#.#...#.....#...#.......#.#.........#.......#...#.#.....#...#....#.#...#.....#...#.......#.#.........#.#####.#...#.#.....#...#....#.#####.#####.#####.#####.#####.....#.......#####.#####.#...#....#.....#.....#...#...#.........#.....#.#####.....#.....#.#...#....#.....#.....#...#...#.........#.....#...........#.....#.#...#....#.#####.#####.......#####.#####.....#...........#.#####.#####
代码:

#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;char a0[7][5]= {'#','#','#','#','#','#','.','.','.','#','#','.','.','.','#','#','.','.','.','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#'};char a1[7][5]= {'.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#'};char a2[7][5]= {'#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#'};char a3[7][5]= {'#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#'};char a4[7][5]= {'#','.','.','.','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#'};char a5[7][5]= {'#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#'};char a6[7][5]= {'#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#'};char a7[7][5]= {'#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#','.','.','.','.','#'};char a8[7][5]= {'#','#','#','#','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#'};char a9[7][5]= {'#','#','#','#','#','#','.','.','.','#','#','.','.','.','#','#','#','#','#','#','.','.','.','.','#','.','.','.','.','#','#','#','#','#','#'};char b1[7][5]= {'.','.','.','.','.','.','.','#','.','.','.','.','#','.','.','#','#','#','#','#','.','.','#','.','.','.','.','#','.','.','.','.','.','.','.'};//+char b2[7][5]= {'.','.','.','.','.','.','.','.','.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.','.','.','.','.','.'};//-char b3[7][5]= {'.','.','.','.','.','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','#','#','#','#','#','.','.','.','.','.','.','.','.','.','.'};//=int main(){    int n;    scanf("%d",&n);    while(n--)    {        char r[66]= {0};        long long a,b,c;        scanf("%lld%lld",&a,&b);        c=a+b;        int flag=0;        if(a<0)        {            flag=1;            a=-a;        }        for(int i=0;; i++)        {            r[i]=a%10+'0';            a/=10;            if(a==0)                break;        }        int la=strlen(r);        for(int j=0; j<la/2; j++)            swap(r[j],r[la-1-j]);        if(b<0)        {            r[la]='-';            b=-b;        }        else            r[la]='+';        for(int i=la+1;; i++)        {            r[i]=b%10+'0';            b/=10;            if(b==0)                break;        }        int lb=strlen(r);        for(int j=la+1; j<(la+lb+1)/2; j++)            swap(r[j],r[lb-j+la]);        r[lb]='=';        if(c<0)        {            r[lb+1]='-';            c=-c;            for(int i=lb+2;; i++)            {                r[i]=c%10+'0';                c/=10;                if(c==0)                    break;            }            int lc=strlen(r);            for(int j=lb+2; j<(lc+lb+2)/2; j++)                swap(r[j],r[lc-j+lb+1]);        }        else        {            for(int i=lb+1;; i++)            {                r[i]=c%10+'0';                c/=10;                if(c==0)                    break;            }            int lc=strlen(r);            for(int j=lb+1; j<(lc+lb+1)/2; j++)                swap(r[j],r[lc-j+lb]);        }        int lc=strlen(r);        for(int x=0; x<7; x++)        {            if(flag==1)                {                    for(int y=0; y<5; y++)                        printf("%c",b2[x][y]);                    printf(".");                }            for(int k=0; k<lc; k++)            {                if(r[k]=='0')                {                    for(int y=0; y<5; y++)                        printf("%c",a0[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='1')                {                    for(int y=0; y<5; y++)                        printf("%c",a1[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='2')                {                    for(int y=0; y<5; y++)                        printf("%c",a2[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='3')                {                    for(int y=0; y<5; y++)                        printf("%c",a3[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='4')                {                    for(int y=0; y<5; y++)                        printf("%c",a4[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='5')                {                    for(int y=0; y<5; y++)                        printf("%c",a5[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='6')                {                    for(int y=0; y<5; y++)                        printf("%c",a6[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='7')                {                    for(int y=0; y<5; y++)                        printf("%c",a7[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='8')                {                    for(int y=0; y<5; y++)                        printf("%c",a8[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='9')                {                    for(int y=0; y<5; y++)                        printf("%c",a9[x][y]);                    if(k!=lc-1)                        printf(".");                }                if(r[k]=='+')                {                    for(int y=0; y<5; y++)                        printf("%c",b1[x][y]);                    printf(".");                }                if(r[k]=='-')                {                    for(int y=0; y<5; y++)                        printf("%c",b2[x][y]);                    printf(".");                }                if(r[k]=='=')                {                    for(int y=0; y<5; y++)                        printf("%c",b3[x][y]);                    printf(".");                }            }            printf("\n");        }        if(n>=1)            printf("\n");    }    return 0;}


原创粉丝点击