1042シャッフルマシーン(20分)

タイトル

1042シャフリングマシン(20分)は、
シャッフリングトランプカードのデッキをランダム化するために使用される手順です。標準シャッフリング技術が弱いと見られ、そして従業員が不十分なシャッフルを行うことで、ギャンブラーとのコラボレーション「内部ジョブ」を避けるためにしているので、多くのカジノでは、自動シャッフルマシンを採用しています。あなたの仕事は、シャッフル機をシミュレートすることです。

機械は、所定の回数のために与えられたランダムな順序と反復に応じて54枚のカードのデックをシャッフル。カードデッキの初期状態は、次の順序であると仮定されています。

S1、S2、...、S13、
H1、H2、...、H13、
C1、C2、...、C13、
D1、D2、...、D13、
J1、J2

ここで、「S」は「ジョーカー」のための「クラブ」のための「C」、「ダイヤモンド」のための「D」、および「J」、「ハート」のための「H」、「スペード」の略です。所定の順序は、[1、54]における異なる整数の順列です。i番目の位置の数はJである場合には、位置jに位置iからカードを移動することを意味します。S3、H5、C1、D13とJ2:例えば、我々は唯一の5枚のカードを持っていると仮定します。シャッフリングの順序{4、2、5、3、1}が与えられると、結果は次のようになりますJ2、H5、D13、S3、C1。我々は再びシャッフルを繰り返すようにしている場合、結果は次のようになります。C1、H5、S3、J2、D13。

入力仕様:
各入力ファイルは、1つのテストケースが含まれています。各場合について、最初の行は、繰り返し回数である正の整数K(≤20)を含みます。そして、次の行は、与えられた順序が含まれています。行のすべての数字は、スペースで区切られます。

出力仕様:
各テストケースの場合は、1行にシャッフル結果を印刷します。すべてのカードは、スペースで区切られ、行の最後に余分なスペースがあってはなりません。

サンプル入力:

2
36 52 37 38 3 39 40 53 54 41 11 12 13 42 43 44 2 4 23 24 25 26 27 6 7 8 48 49 50 51 9 10 14 15 16 5 17 18 19 1 20 21 22 28 29 30 31 32 33 34 35 45 46 47

サンプル出力:

S7 C11 C10 C12 S1 H7 H8 H9 D8 D9 S11 S12 S13 D10 D11 D12 S3 S4 S6 S10 H1 H2 C13 D2 D3 D4 H6 H3 D13 J1 J2 C1 C2 C3 C4 D1 S5 H5 H11 H12 C6 C7 C8 C9 S2 S8 S9 H10 D5 D6 D7 H4 H13 C5

効果の件名:

  • 与えられたために、シャッフル。元の場所は、電流に対応するデジタルになるであろう。
  • そして、k回繰り返します。

思考

  • 2つのアレイ、元の位置の最初のレコードの構築を開始するために割り当てられた端部を変更した後、第二のレコードの位置を変更します
  • それを使用することができる場合、出力端/ 13したがって、対応するS、H、C、D、J.
  • 注意場合N = 13分の13ダイレクト端はS0に、もたらす場合、1-13の番号が付けられ、その後、事前にエンドでき+1

コード

#include <stdio.h>
int m[55];
int begin[55];
int end[55];
int main(){
	int n;
	scanf("%d\n",&n);

	for(int i=1;i<=54;i++){
		scanf("%d",&m[i]);
		begin[i]=i;
	}
	for(int i=0;i<n;i++){
	for (int i=1;i<=54;i++){
		end[m[i]] = begin[i];
	}
	for(int i=1;i<=54;i++){
		begin[i]=end[i];
	}	
	}
	int mp[5] = {'S','H','C','D','J'};
	for (int i=1;i<=54;i++){
		if(i!=1)printf(" ");
		end[i]--;
		printf("%c%d",mp[(end[i])/13],(end[i])%13+1);
	}

	
}

参照

雨の神コレクション

公開された91元の記事 ウォンの賞賛9 ビュー10000 +

おすすめ

転載: blog.csdn.net/WeDon_t/article/details/105105469