思路:涉及到洗牌的问题往往把花色和数字分开看。
注意最后end[i]–。因为要重新把数字确定到1~13,并且分配花色
const int N=54;
char color[5]={'B','S','C','D','J'};
int start[N+1],next[N+1],end[N+1] ;
int main(){
for(int i=1;i<=N;i++){
start[i]=i;
}
int k;
cin>>k;
for(int i=1;i<=N;i++){
cin>>next[i];
}
for(int i=0;i<k;i++){
for(int j=1;j<=N;j++)
{
end[i]=start[next[i]];
}
for(int j=1;j<=N;j++)
{
start[i]=end[i];
}
}
for(int i=1;i<=N;i++){
if(i!=1) cout<<" ";
end[i]--;
cout<<color[end[i]/13]<<end[i]%13+1;
//1~13号为B
//2~26号为S...
}
return 0;
}