#include<cstdio>
#define N 54
char s[5]={'S','H','C','D','J'};
int start[N+1],next[N+1],en[N+1];
int main()
{
int k;
int i,j;
scanf("%d",&k);
for(i=1;i<=N;i++)
{
start[i]=i;
}
for(i=1;i<=N;i++)
{
scanf("%d",&next[i]);
}
for(i=0;i<k;i++)
{
for(j=1;j<=N;j++)
{
en[next[j]]=start[j];
}
for(j=1;j<=N;j++)
{
start[j]=en[j];
}
}
for(i=1;i<=N;i++)
{
if(i!=1)
{
printf(" ");
}
start[i]--;
printf("%c%d",s[start[i]/13],start[i]%13+1);
}
return 0;
}
还是题意的问题!!!而且最后要-1,因为是从1开始的
假设牌号为x(1<=x<=54)
那么(x-1)/13的结果则为花色对应的下标
(x-1)%13+1的结果则为所属花色下的牌号
思考了很久,最后 start[i]--;
是因为J的情况 只有2个 53、54带进去输出 结果竟然是2、3还有13的情况