http://acm.pku.edu.cn/JudgeOnline/problem?id=1051
Код:
#include <iostream> #include <string> using namespace std; int main() { int N; int i,j,k,l,Tlen=0,thiscode; int Tcode[5000]; int RTcode[5000]; int len[1000]={0}; int code[100]={0}; int decode[10000]; char msg[1000]; code[65]=12; code[66]=2111; code[67]=2121; code[68]=211; code[69]=1; code[70]=1121; code[71]=221; code[72]=1111; code[73]=11; code[74]=1222; code[75]=212; code[76]=1211; code[77]=22; code[78]=21; code[79]=222; code[80]=1221; code[81]=2212; code[82]=121; code[83]=111; code[84]=2; code[85]=112; code[86]=1112; code[87]=122; code[88]=2112; code[89]=2122; code[90]=2211; code[95]=1122; code[44]=1212; code[46]=2221; code[63]=2222; for(i=0;i<100;i++) decode[code[i]]=i; cin >> N; for(i=0;i<N;i++){ cin >> msg; cout << i+1 << ": "; l=strlen(msg); Tlen=0; for(j=0;j<1000;j++) len[j]=0; for(j=l-1;j>-1;j--){ thiscode=code[(int)msg[j]]; while(thiscode!=0){ Tcode[Tlen]=thiscode%10; Tlen++; len[j]++; thiscode/=10; } } for(j=0;j<Tlen;j++) RTcode[j]=Tcode[Tlen-j-1]; Tlen=0; for(j=0;j<l;j++){ thiscode=0; for(k=0;k<len[l-j-1];k++){ thiscode+=RTcode[Tlen]; thiscode*=10; Tlen++; } thiscode/=10; cout << (char)decode[thiscode]; } cout << endl; } }