問題:Facebook Hacker Cup 2011 Round 1Bの Slot Machine Hacker
目標:stdin / stdoutを使用したお気に入りの言語での最短コード。getRandomNumber定義されていると仮定することはできません。つまり、ソリューションには、機能として、または他の方法でゴルフの可能性のあるバージョンを含める必要があります。
参照解決策:SO [私は私のものを選びました。stdin/ stdoutを使用しているため、daveの解決策がわかりません。]
問題のテキストは次のとおりです。
最近、スロットマシン用のソフトウェアを書いている人と友達になりました。彼と少し時間を過ごした後、あなたは彼がスロットマシンがどのように機能するかについての彼の知識を誇示する傾向があることに気付きます。最終的には、特定のブランドのマシンで使用されているアルゴリズムを詳細に説明するように彼に依頼します。アルゴリズムは次のとおりです。
int getRandomNumber() {
secret = (secret * 5402147 + 54321) % 10000001;
return secret % 1000;
}
この関数は、[0、999]の整数を返します。各数字は、特定のマシン状態の間にホイールに表示される10個のシンボルの1つを表します。secretは、最初は未知の非負の値に設定されます。
マシンの動作を十分に長く観察することで、秘密の価値を判断し、将来の結果を予測できます。将来の結果を知っていれば、スマートな方法で賭けて多くのお金を獲得することができます。
入力
入力の最初の行には、テストケースの数である正の数Tが含まれています。これに、Tテストケースが続きます。各テストケースは正の整数Nで構成され、これはあなたが行う観測の数です。次のNトークンは、観測値を表す0〜999の整数です。
出力
各テストケースについて、空白文字で区切られたマシンによって表示される次の10個の値を出力します。観察したシーケンスが、友人が説明したマシンで作成できない場合は、"Wrong machine"代わりに印刷してください。次の10個の値を一意に決定できない場合は、"Not enough observations"代わりに印刷してください。
制約
- T = 20
- 1≤N≤100
- 入力のトークンは3文字以下で、0〜9の数字のみが含まれます。
入力例
5
1 968
3 767 308 284
5 78 880 53 698 235
7 23 786 292 615 259 635 540
9 862 452 303 558 767 105 911 846 462
出力例
Not enough observations
577 428 402 291 252 544 735 545 771 34
762 18 98 703 456 676 621 291 488 332
38 802 434 531 725 594 86 921 607 35
Wrong machine