解法一:模拟
#include <bits/stdc++.h>using namespace std;const int N = 54;string cardsA[N + 1];string cardsB[N + 1];int pos[N + 1];int main() { ios::sync_with_stdio(false); cin.tie(0); for (int i = 1; i <= N; ++i) { int tmp = (i - 1) / 13; switch (tmp) { case 0: cardsA[i] = "S" + to_string(i); break; case 1: cardsA[i] = "H" + to_string(i - 13); break; case 2: cardsA[i] = "C" + to_string(i - 26); break; case 3: cardsA[i] = "D" + to_string(i - 39); break; case 4: cardsA[i] = "J" + to_string(i - 52); } } int K; cin >> K; for (int i = 1; i <= N; ++i) { cin >> pos[i]; } while (K-- > 0) { for (int i = 1; i <= N; ++i) { cardsB[pos[i]] = cardsA[i]; } for (int i = 1; i <= N; ++i) { cardsA[i] = cardsB[i]; } } cout << cardsA[1]; for (int i = 2; i <= N; ++i) { cout << " " << cardsA[i]; } cout << "\n";}