PAT 1042

题目 : Shuffling Machine

分值 : 20
难度 : 中等题
思路 : 排个序转一下
坑点 : 如果不用string数组的话,在考虑问题时需要细心,因为是1~13而不是0~12
评语 : 想到就很简单,代码略有冗余

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
#include <algorithm>
using namespace std;
int list[55] ;
int final[55];
int list2[55];
int main() {
int N ;
cin>>N ;
for(int i = 1 ; i<= 54 ;i++)
{
cin >>list[i] ;final[i] = i ;
}
for(int j = 0 ; j< N ; j++)
{
for(int i = 1 ; i<=54 ; i++)
{
final[i] = list[ final[i] ] ;
}
}
for(int i = 1; i<=54 ; i++)
{
list2[ final[i] ] = i ;
}
for(int i = 1; i<=54 ;i++)
{
int temp = list2[i]-1;
string s ;
if(temp/13 == 0) s="S" ;
if(temp/13 == 1) s="H" ;
if(temp/13 == 2) s="C" ;
if(temp/13 == 3) s="D" ;
if(temp/13 == 4) s="J" ;
if(temp%13 <9)
s+= (temp%13)+'0'+1;
else {
s += '1';
s += (temp%13+1)%10 + '0';
}
cout <<s;
if(i!=54)
cout <<" ";

}
}