No.3673 未来予知
注意:この問題は実行時間制限が非常に厳しく設定されています。
問題文
あなたは、ロボットの Alice と特殊なじゃんけんをしています。
このじゃんけんには、R, S, P, X の 4 種類の手があります。あなたの手と Alice の手に対する勝敗は、次の表で定められます。
表の行はあなたの手、列は Alice の手を表します。
| あなたの手 / Alice の手 | R |
S |
P |
X |
|---|---|---|---|---|
R |
引き分け | 勝ち | 引き分け | 負け |
S |
負け | 引き分け | 勝ち | 引き分け |
P |
引き分け | 負け | 引き分け | 勝ち |
X |
勝ち | 引き分け | 負け | 引き分け |
したがって、Alice の手に勝つためには、次の手を出す必要があります。
| Alice の手 | 勝つ手 |
|---|---|
R |
X |
S |
R |
P |
S |
X |
P |
Alice は、内部に符号なし 32-bit 整数 state を保持しています。
最初に、state は $1$ 以上 $2^{32}-1$ 以下の整数から一つ選ばれます。あなたは、この初期値を知りません。
Alice は、各じゃんけんで次の疑似コードを 1 回実行し、出す手を決定します。
state ← 1 以上 2^32-1 以下の整数から1つ選ぶ
function generate_random_number():
state ← state XOR (state << 13)
state ← state XOR (state >> 17)
state ← state XOR (state << 5)
return state
function choose_hand():
x ← generate_random_number()
if x mod 4 = 0:
return 'R'
else if x mod 4 = 1:
return 'S'
else if x mod 4 = 2:
return 'P'
else:
return 'X'
ここで、XOR はビットごとの排他的論理和、<< は左ビットシフト、>> は右ビットシフトを表します。
すべての演算は符号なし 32-bit 整数上で行われます。演算結果が 32 bit を超えた場合、上位の超過した bit は切り捨てられます。
あなたはこれまで Alice と $100$ 回じゃんけんを行い、Alice が出した手をすべて記録しました。
この記録は長さ $100$ の文字列 $T$ で表されます。$T$ の $i$ 文字目は、$i$ 回目のじゃんけんで Alice が出した手を表します。
この記録を利用して、これから行われる $N$ 回のじゃんけんすべてに勝利してください。
形式的には、以下の条件を満たす長さ $N$ の文字列 $U$ を出力してください。
- $U_i$ は、あなたが $100+i$ 回目のじゃんけんで出す手を表す。
- すべての $1\leq i\leq N$ について、$U_i$ は Alice が $100+i$ 回目に出す手に勝つ。
なお、この問題の制約下では、異なる初期状態から同じ文字列 $T$ が生成されないことが証明できます。
入力
入力は以下の形式で標準入力から与えられます。
$T$ $N$
- $T$ は長さ $100$ の文字列
- $T$ の各文字は
R,S,P,Xのいずれかである - $T$ は、問題文中の疑似コードによって生成されたものである
- $1\leq N\leq 2\times10^5$
- $N$ は整数
出力
答えを $1$ 行に出力してください。 最後に改行してください。
サンプル
サンプル1
入力
SSSXSRPPSRXXPPSSRRSSXSXXPSSRXPXRSRRRPPPXSPXXXSSRSSXXRSRRRRXSSPRXRRRPSRPSRRRSPSXRSRPRRRXXSXRSXSRPXSRX 1
出力
X
サンプル2
入力
XXXPSRRXPXXRRRPSXPRRRPSSRSXRSPSPXPPSSRRRXPSXSRRXRXSPXXRPPSSPSRPPPXSRSPRPSRXRSSPSRPSRPPRSPRSRSSXXPPXS 5
出力
PXSPR
サンプル3
入力
SXRRRSSSXSRRRSPSPSSRXPRSPSRSRXPRXSRXRPPPPPSSSRPSSRSRSXRRPPXRRSRXXSRSXXXXRPPRRSPSRSRXXSRPPXSRPSPPSRPR 10
出力
RPSRXPPSXP
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。
harurun