PAT (Advanced Level) 1042. Shuffling Machine (20)

简单题。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;

struct X
{
    char c;
    int num;
}s[60];

int ans[60],p[60],tmp[60];
int n;

void init()
{
    for(int i=1;i<=13;i++) s[i].c='S',s[i].num=i;
    for(int i=14;i<=26;i++) s[i].c='H',s[i].num=i-13;
    for(int i=27;i<=39;i++) s[i].c='C',s[i].num=i-26;
    for(int i=40;i<=52;i++) s[i].c='D',s[i].num=i-39;
    s[53].c='J'; s[53].num=1;
    s[54].c='J'; s[54].num=2;
}

int main()
{
    init();
    for(int i=1;i<=54;i++) ans[i]=i;

    int k; scanf("%d",&k);
    for(int i=1;i<=54;i++) scanf("%d",&p[i]);

    for(int i=1;i<=k;i++)
    {
        for(int j=1;j<=54;j++) tmp[p[j]]=ans[j];
        for(int j=1;j<=54;j++) ans[j]=tmp[j];
    }

    for(int i=1;i<=54;i++)
    {
        printf("%c%d",s[ans[i]].c,s[ans[i]].num);
        if(i<54) printf(" ");
        else printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zufezzt/p/5526910.html