http://pat.zju.edu.cn/contests/pat-a-practise/1042
#include <stdio.h>
int card[55]; //有序牌
int order[55]; //特定顺序
int tmp[55]; //暂存中间变换结果
char type[5]={'S','H','C','D','J'}; //i与类型对应
int main()
{
int n,i;
scanf("%d",&n);
for (i=1;i<=54;i++)
{
card[i]=i;
tmp[i]=i;
scanf("%d",&order[i]);
}
while (n--)
{
for (i=1;i<=54;i++) //按顺序将牌放到特定位置
{
card[ order[i] ]=tmp[i];
}
for (i=1;i<=54;i++) //新的牌保存,下次变换就是对这个牌变换,相当于初始的1~54
{
tmp[i]=card[i];
}
}
for (i=1;i<=54;i++)
{
int x=card[i]; //如13-->s1,所以13--,12/13=0,12%13=0,0+1=1
x--;
if (i==1)
{
printf("%c",type[x/13]);
printf("%d",x%13+1);
}
else
{
printf(" %c",type[x/13]);
printf("%d",x%13+1);
}
}
printf("\n");
return 0;
}