/* Mon Nov 10 18:33:?? JST 2003 : Start */ /* Mon Nov 10 18:43:?? JST 2003 : Accepted */ #include #include #include int decode(char s[1024], int c) { char t[1024]; int i, len; strcpy(t, s); len = strlen(s); switch (c) { case 'J': for (i = 0; i < len-1; i++) { s[i+1] = t[i]; } s[0] = t[len-1]; break; case 'C': for (i = 0; i < len-1; i++) { s[i] = t[i+1]; } s[len-1] = t[0]; break; case 'E': for (i = 0; i < len/2; i++) { s[i] = t[len/2+len%2+i]; s[len/2+len%2+i] = t[i]; } break; case 'A': for (i = 0; i < len; i++) { s[i] = t[len-1-i]; } break; case 'P': for (i = 0; i < len; i++) { if (isdigit(t[i])) { if (t[i] == '0') { s[i] = '9'; } else { s[i] = t[i]-1; } } else { s[i] = t[i]; } } break; case 'M': for (i = 0; i < len; i++) { if (isdigit(t[i])) { if (t[i] == '9') { s[i] = '0'; } else { s[i] = t[i]+1; } } else { s[i] = t[i]; } } break; } } int main() { char s[1024], c[1024]; int n, i, j, len; gets(s); n = atoi(s); for (i = 0; i < n; i++) { gets(c); gets(s); len = strlen(c); for (j = len-1; j >= 0; j--) { decode(s, c[j]); } printf("%s\n", s); } return 0; }