【PAT甲级】1042 Shuffling Machine (20 分)

题意:

输入洗牌次数K(<=20),输入54张牌每次洗入的位置(不是交换的位置),输出洗好的牌。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 multiset<int>st;
 5 int a[57];
 6 int card[57],b[57];
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin.tie(NULL);
10     cout.tie(NULL);
11     for(int i=1;i<=54;++i)
12         card[i]=i;
13     int k;
14     cin>>k;
15     for(int i=1;i<=54;++i)
16         cin>>a[i];
17     for(int i=1;i<=k;++i){
18         if(i&1)
19             for(int j=1;j<=54;++j)
20                 b[a[j]]=card[j];
21         else
22             for(int j=1;j<=54;++j)
23                 card[a[j]]=b[j];
24     }
25     int x=0;
26     for(int i=1;i<=54;++i){
27         if(k&1)
28             x=b[i];
29         else
30             x=card[i];
31         if(x<=13)
32             cout<<"S"<<x;
33         else if(x<=26)
34             cout<<"H"<<x-13;
35         else if(x<=39)
36             cout<<"C"<<x-26;
37         else if(x<=52)
38             cout<<"D"<<x-39;
39         else
40             cout<<"J"<<x-52;
41         if(i<54)
42             cout<<" ";
43     }
44     return 0;
45 }

 

 

 

posted @ 2019-09-26 02:06  sewage  阅读(139)  评论(0编辑  收藏  举报