nyoj643

来源:互联网 发布:数控加工中心软件 编辑:程序博客网 时间:2024/06/06 05:23

题意:略。
思路:模拟。
AC代码: 写的太麻烦。

#include <cstdio>#include <cstring>#include <map>#include <set>using namespace std;const int maxn=2010;int a[maxn];char s[maxn];char ch[maxn];map<char,int>mp;map<int, char>mm;void init(){    mp['A']=2; mp['B']=22; mp['C']=222; mp['D']=3;    mp['E']=33;mp['F']=333;    mp['G']=4; mp['H']=44; mp['I']=444; mp['J']=5; mp['K']=55;mp['L']=555;    mp['M']=6; mp['N']=66;mp['O']=666; mp['P']=7; mp['Q']=77; mp['R']=777;    mp['S']=7777; mp['T']=8; mp['U']=88; mp['V']=888; mp['W']=9; mp['X']=99;      mp['Y']=999;mp['Z']=9999;}void init11(){    mm[2]='A'; mm[22]='B'; mm[222]='C'; mm[3]='D'; mm[33]='E';mm[333]='F';    mm[4]='G'; mm[44]='H'; mm[444]='I'; mm[5]='J'; mm[55]='K';mm[555]='L';    mm[6]='M'; mm[66]='N'; mm[666]='O'; mm[7]='P'; mm[77]='Q'; mm[777]='R';    mm[7777]='S'; mm[8]='T'; mm[88]='U'; mm[888]='V'; mm[9]='W'; mm[99]='X';      mm[999]='Y';mm[9999]='Z';}int main(){ //   freopen("51.txt","r",stdin);    init();    init11();    while(gets(s)){        memset(a,0,sizeof(a));        memset(ch,0,sizeof(ch));        int cnt=0;        int len=strlen(s);        if(s[0]>='0' && s[0]<='9'){            int sum=0;            for(int i=0; i<len; i++){                if(s[i]==' '){                    if(sum==0)  continue;                    ch[cnt++]=mm[sum];                    sum=0;                }                else if(s[i]=='0'){                    ch[cnt++]='0';                }else {                    sum=sum*10+(s[i]-'0');                }            }            if(sum!=0)                ch[cnt++]=mm[sum];            for(int i=0; i<cnt; i++){                if(ch[i]=='0') printf(" ");                else printf("%c",ch[i]);            }printf("\n");        }else {            for(int i=0; s[i]!='\0'; i++){                if(s[i]==' ') printf("0 ");                else {                    printf("%d ",mp[s[i]]);                    a[cnt++]=mp[s[i]];                }            }printf("\n");        }    }    return 0;}
0 0
原创粉丝点击