题目链接:
https://pintia.cn/problem-sets/994805342720868352/problems/994805442671132672
AC代码:
#include <iostream>
#include <cstdio>
using namespace std;
const int N=54;
char mp[5]={'S','H','C','D','J'};
int start_[N+1],end_[N+1],next_[N+1];
int main(){
int K;
scanf("%d",&K);
for(int i=1;i<=54;i++)
start_[i]=i;
for(int i=1;i<=54;i++)
scanf("%d",&next_[i]);
for(int i=0;i<K;i++){
for(int j=1;j<=54;j++)
end_[next_[j]]=start_[j];
for(int j=1;j<=54;j++)
start_[j]=end_[j];
}
for(int j=1;j<=54;j++){
if(j!=1) printf(" ");
start_[j]--;//mp数组存在0号位,所以start需要--
printf("%c%d",mp[start_[j]/13],start_[j]%13+1);
}
return 0;
}