1042 Shuffling Machine (20 point(s))

1042 Shuffling Machine (20 point(s))

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int MAXN = 54;
int a[MAXN], res[MAXN], op[MAXN];
int k;
int main() {
	scanf("%d", &k);
	for(int i = 0; i < MAXN; ++i) a[i] = i;
	for(int i = 0; i < MAXN; ++i) scanf("%d", &op[i]);
	for(int i = 0; i < k; ++i) {
		for(int j = 0; j < MAXN; ++j)	res[op[j] - 1] = a[j];
		memcpy(a, res, sizeof(res));
	}
	string t = "SHCDJ";
	for(int i = 0; i < MAXN; ++i) printf("%c%d%c", t[res[i] / 13], res[i] % 13 + 1, i == MAXN - 1 ? '\n' : ' ');
	return 0;
}