PAT A1042 Shuffing Machine

思路:按照题目意思进行模拟即可,注意 iostream 头文件中已经有 next 的命名,可能出现报错。

#include<cstdio>
using namespace std;

const int N = 54;

char numToLet[5] = {'S', 'H', 'C', 'D', 'J'};
int start[60], end[60], next[60];
int k;

int main() {
    scanf("%d", &k);
    for(int i = 1; i <= N; i++) {
        start[i] = i;
        scanf("%d", &next[i]);
    }
    for(int i = 0; i < k; i++) {
        for(int j = 1; j <= N; j++) {
            end[next[j]] = start[j];
        }
        for(int j = 1; j <= N; j++) {
            start[j] = end[j];
        }
    }
    for(int i = 1; i <= N; i++) {
        printf("%c%d", numToLet[(start[i] - 1) / 13], (start[i] - 1) % 13 + 1);
        if(i != N) printf(" ");
    }
    return 0;
}