纯模拟过的。地址:http://acm.pku.edu.cn/JudgeOnline/problem?id=2041
#include "string.h"
#include 
"stdio.h"
char s[26];
char q[7];
void A(char str[],int len)
{
    
int i;
    
char temp;
    
for(i=len-1;i>len-1-i;i--)
    
{
        temp
=str[i];
        str[i]
=str[len-1-i];
        str[len
-1-i]=temp;
    }

}

void C(char str[],int len)
{
    
int i;
    
char temp;
    temp
=str[0];
    
for(i=0;i<len-1;i++)str[i]=str[i+1];
    str[i]
=temp;
}

void J(char str[],int len)
{
    
int i;
    
char temp;
    temp
=str[len-1];
    
for(i=len-1;i>0;i--)str[i]=str[i-1];
    str[i]
=temp;
}

void E(char str[],int len)
{
    
int i;
    
char temp;
    
if(len%2)
    
{
        
for(i=0;i<len/2;i++)
        
{
            temp
=str[i];
            str[i]
=str[i+len/2+1];
            str[i
+len/2+1]=temp;
        }

    }

    
else
    
{
        
for(i=0;i<len/2;i++)
        
{
            temp
=str[i];
            str[i]
=str[i+len/2];
            str[i
+len/2]=temp;
        }

    }

}

void P(char str[],int len)
{
    
int i;
    
for(i=0;i<len;i++)
    
{
        
if(str[i]>47&&str[i]<58)
        
{
            str[i]
-=1;
            
if(str[i]<=47)str[i]=57;
        }

    }

}

void M(char str[],int len)
{
    
int i;
    
for(i=0;i<len;i++)
    
{
        
if(str[i]>47&&str[i]<58)
        
{
            str[i]
+=1;
            
if(str[i]>=58)str[i]=48;
        }

    }

}

void f(char ch,char str[],int len)
{
    
if(ch=='A')A(str,len);
    
if(ch=='C')C(str,len);
    
if(ch=='E')E(str,len);
    
if(ch=='J')J(str,len);
    
if(ch=='M')M(str,len);
    
if(ch=='P')P(str,len);
}

int main()
{
    
int n,i;
    
int slen,qlen;
    scanf(
"%d",&n);
    
while(n>0)
    
{
        scanf(
"%s%s",&q,&s);
        slen
=strlen(s);
        qlen
=strlen(q);
        
for(i=qlen-1;i>=0;i--)f(q[i],s,slen);
        printf(
"%s\n",s);
        n
--;
    }

    
return 0;
}