#include<stdio.h> #include<string.h> char str[1001], S[26] = {'K','X','V','M','C','N','O','P','H','Q','R','S','Z','Y','I','J','A','D','L','E','G','W','B','U','F','T'}; char s[502], s1[251], s2[251]; void get() { int i, l, k; l = strlen(str); k = 0; for(i = 0; i < l; i += 2) { if(str[i] == '2') { if(str[i+1] == '1') s[k] = 'A'; if(str[i+1] == '2') s[k] = 'B'; if(str[i+1] == '3') s[k] = 'C'; } else if(str[i] == '3') { if(str[i+1] == '1') s[k] = 'D'; if(str[i+1] == '2') s[k] = 'E'; if(str[i+1] == '3') s[k] = 'F'; } else if(str[i] == '4') { if(str[i+1] == '1') s[k] = 'G'; if(str[i+1] == '2') s[k] = 'H'; if(str[i+1] == '3') s[k] = 'I'; } else if(str[i] == '5') { if(str[i+1] == '1') s[k] = 'J'; if(str[i+1] == '2') s[k] = 'K'; if(str[i+1] == '3') s[k] = 'L'; } else if(str[i] == '6') { if(str[i+1] == '1') s[k] = 'M'; if(str[i+1] == '2') s[k] = 'N'; if(str[i+1] == '3') s[k] = 'O'; } else if(str[i] == '7') { if(str[i+1] == '1') s[k] = 'P'; if(str[i+1] == '2') s[k] = 'Q'; if(str[i+1] == '3') s[k] = 'R'; if(str[i+1] == '4') s[k] = 'S'; } else if(str[i] == '8') { if(str[i+1] == '1') s[k] = 'T'; if(str[i+1] == '2') s[k] = 'U'; if(str[i+1] == '3') s[k] = 'V'; } else if(str[i] == '9') { if(str[i+1] == '1') s[k] = 'W'; if(str[i+1] == '2') s[k] = 'X'; if(str[i+1] == '3') s[k] = 'Y'; if(str[i+1] == '4') s[k] = 'Z'; } k++; } s[k] = '\0'; } void change() { int i, l; l = strlen(s); for(i = 0; i < l; ++i) s[i] = S[s[i] - 'A']; } void cut() { int i, j, l, l1, l2; l = strlen(s); if(l & 1) { l1 = l/2 + 1; l2 = l - l1; for(i = 0; i < l1; ++i) s1[i] = s[i]; for(i = l1; i < l; ++i) s2[i-l1] = s[i]; } else { l1 = l/2; l2 = l1; for(i = 0; i < l1; ++i) s1[i] = s[i]; for(i = l1; i < l; ++i) s2[i-l1] = s[i]; } i = 0; while(l1 >= 0) { if(l1 > l2) { s[i++] = s1[l1-1]; l1--; } else { s[i++] = s2[l2-1]; l2--; } } } int main() { int i, j, k; while(gets(str) != NULL) { get();//get str change(); cut(); puts(s); } return 0; }
题意:给出一串数字,表示n个字符的编码,第一个数字表示键盘上的数字键,第二个数字表示该键上的第几个字符,将数字转换成字符,接着将对应的字符通过题目给出的规律再次进行转换,得到一个新的字符串,将字符串平分成2个部分,前面的长度大于后面的,再将这2个部分重新组合得到最终的答案。
思路:思路就是题意,很清晰,就是通过对字符串的逐步操作得出最终的答案。