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