一、可借鉴的
1. 根据号码等分时,判断属于哪一类的
减1后再模
switch((a-1)/13){...}
2. 根据号码等分时,求指定号码在所在类的序号
printf("%d",((start[i] - 1) % 13 + 1));
二、代码
#include<cstdio>void change(int a){switch((a-1)/13){case 0: printf("S");break;case 1: printf("H");break;case 2: printf("C");break;case 3: printf("D");break;case 4: printf("J");break;}}int main(){int K = 0;int next[55] = {};next[0] = 0;//输入Kscanf("%d",&K);//输入位置for (int i = 1;i < 55;i++){scanf("%d",&next[i]);}//初始化start[]int start[55];start[0] = 0;int end[55];end[0] = 0;for (int i = 1;i < 55;i++){start[i] = i;}//执行K次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 i = 1;i < 55;i++ ){change(start[i]);printf("%d",((start[i] - 1) % 13 + 1));if (i!=54){printf(" ");}}}
