一道普通的签到题

**

签到题但是没做出来

**

转眼就到了2018年的ACM集训队第二次招新,希望大家在本次比赛中取得好成绩!

看标题名字就知道,历史总是惊人的相似,这个题目和上次招新赛的某道题很像,还是关于A+B问题的,题目是这样的:

给出你一个表达式只包含’+’,’-'两种运算,然后你要输出对应结果的字符画形式。

给出的表达式形式一定是形如:

‘a+b’,‘a-b’,这种形式,并且保证a和b的范围都在0~9之内.

具体的输入和输出可以通过观察样例得到。

…# ##### ##### #…# ##### ##### ##### ##### ##### … … …

#…# …# …# …# #…# #… #… …# #…# #…# …#… … …
#…# …# …# …# #…# #… #… …# #…# #…# …#… … #####
#…# …# ##### ##### ##### ##### ##### …# ##### ##### ##### ##### …
#…# …# #… …# …# …# #…# …# #…# …# …#… … #####
#…# …# #… …# …# …# #…# …# #…# …# …#… … …

…# ##### ##### …# ##### ##### …# ##### ##### … … …

输入描述:
第一行包含一个整数T,代表有T组输入数据
对于每组数据,包含一个表达式,如:
3-5
1+4
0-0
输出描述:
对于每一个表达式,输出对应的字符画,输出方式可以观察样例得到。
对于每组数据,输出一个换行.
4
3-5
9-9
9+9
0-0
样例输出:
#####…#####…#####
…#…#…#
…#…#…#####…#
#####.#####.#####…#####.#####
…#…#.#####…#…
…#…#…#…
#####…#####…#####

#####…#####…#####
#…#…#…#…#…#
#…#…#…#.#####.#…#
#####.#####.#####…#…#
…#…#.#####.#…#
…#…#…#…#
#####…#####…#####

扫描二维码关注公众号,回复: 6030237 查看本文章

#####…#####…#.#####
#…#…#…#…#…#.#…#
#…#…#…#…#.#####…#.#…#
#####.#####.#####…#.#####
…#…#…#.#####…#.#…#
…#…#…#…#.#…#
#####…#####…#.#####

#####…#####…#####
#…#…#…#…#…#
#…#…#…#.#####.#…#
#…#.#####.#…#…#…#
#…#…#…#.#####.#…#
#…#…#…#…#…#
#####…#####…#####

#include<stdio.h>
char shuzi[7][70]= {
    {"#####....############...##########################..............."},
    {"#...#....#....#....##...##....#........##...##...#..#............"},
    {"#...#....#....#....##...##....#........##...##...#..#.......#####"},
    {"#...#....##########################....#####################....."},
    {"#...#....##........#....#....##...#....##...#....#..#.......#####"},
    {"#...#....##........#....#....##...#....##...#....#..#............"},
    {"#####....###########....###########....###########..............."},
};
int er(int x)
{
    if(x<=9&&x>=0)
        return 5*x;
    if((char)x=='+')
        return 50;
    if((char)x=='-')
        return 55;
    if((char)x=='=')
        return 60;
}
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int a,c,num=0,suanshi[7],sum;
        char b;
        scanf("%d%c%d",&a,&b,&c);
        suanshi[num++]=er(a);
        suanshi[num++]=er((int)b);
        suanshi[num++]=er(c);
        suanshi[num++]=er((int)'=');
        if(b=='+') sum=a+c;
        if(b=='-') sum=a-c;
        if(sum<0)
        {
            suanshi[num++]=er((int)'-');
            sum*=-1;
        }
        if(sum/10)
        {
            suanshi[num++]=er(sum/10);
            sum%=10;
        }
        suanshi[num++]=er(sum);
        for(int i=0; i<7; i++)
        {
            for(int j=0; j<num; j++)
            {
                if(j)
                    printf(".");
                int jishu=suanshi[j];
                for(int k=0; k<5; k++)
                    printf("%c",shuzi[i][jishu+k]);
            }
            printf("\n");
        }
        printf("\n");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43740907/article/details/84259359