Arithmetic Right Shift

2 secs 1024 MB
loop0919's icon loop0919

問題文

正整数 KK0, 1 からなる文字列 SS が与えられます。
ここで、SS に対する以下の操作を算術右シフトといいます。

  • SS11 文字目の文字を SS の先頭に挿入する。その後、SS の末尾の文字を 11 つ削除する。

算術右シフトをちょうど KK 回行った後の SS を求めてください。

TT 個のテストケースが与えられるので、それぞれについて答えてください。

制約

  • 1T1041 \le T \le 10^4
  • 1K1091 \le K \le 10^9
  • T,KT, K は整数である
  • SS0, 1 からなる長さ 11 以上 6464 以下の文字列である

入力

入力は以下の形式で標準入力から与えられる。 ここで、casei (1iT)\mathrm{case}_i ~ (1 \le i \le T)ii 個目のテストケースである。

TT
case1\mathrm{case}_1
case2\mathrm{case}_2
\vdots
caseT\mathrm{case}_T

各テストケースは以下の形式で与えられる。

KK
SS

出力

TT 行出力し、ii 行目には ii 個目のテストケースについての答えを出力せよ。

サンプル

入力
4
2
0110
5
10101010
998244353
01
9
1101000000000111
出力
0001
11111101
00
1111111111101000

11 個目のテストケースについて、以下の手順で算術右シフトを 22 回行います。 ここで、S1S_1SS11 文字目の文字とします。

  • S=S = 0110 の先頭に S1=S_1 = 0 を挿入し、SS の末尾の文字を削除する。S=S = 0011 に更新される。
  • S=S = 0011 の先頭に S1=S_1 = 0 を挿入し、SS の末尾の文字を削除する。S=S = 0001 に更新される。

このようにして、0001 を得ることができます。

22 個目のテストケースについて、S1=S_1= 1 を挿入し、SS の末尾の文字を削除する操作を 55 回行うと、11111101 を得ることができます。

33 個目のテストケースについて、算術右シフトを行う回数が膨大になる場合に注意してください。

提出


Go (1.21)