1. paizaラーニングトップ
  2. レベルアップ問題集
  3. bit全探索メニュー(言語選択)
  4. 問題一覧 JavaScript編
  5. ビットシフト 基礎 1 JavaScript編

bit全探索メニューのサムネイル
ビットシフト 基礎 1 JavaScript編(paizaランク C 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

ビット列を右もしくは左にずらすことをビットシフトと呼びます。
特に、ビット列を左にずらすことを論理左シフト演算または単に左シフト、右にずらすことを論理右シフト演算または単に右シフトと呼びます。
シフトによってはみ出た部分のビットは捨てられ、足りない部分のビットは 0 で埋められます。

例えば、4 桁のビット列 0011 を 1 ビット右シフトすると 0001 になります。
4 桁のビット列 1010 を 2 ビット左シフトすると 1000 になります。

10 桁のビット列 B が与えられます。
Q 個のクエリが与えられるので順に解答してください。
クエリは以下の 2 種類のいずれかです。

1 k:B を右に k ビットシフトしたものを出力する。
2 k:B を左に k ビットシフトしたものを出力する。

入力される値

B
Q
query_1
query_2
...
query_Q

・ 1 行目に、ビット列 B が与えられます。
・ 2 行目に、クエリの個数を表す整数 Q が与えられます。
・ 続く Q 行の i (1 ≦ i ≦ Q) 行目には、i 個目のクエリが与えられます。クエリは問題文の形式で与えられます。
・ 入力は合計で Q+2 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

期待する出力は Q 行からなります。
i (1 ≦ i ≦ Q) 行目には、i 個目のクエリに対する答えを出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・ 1 ≦ Q ≦ 10
・ |B| = 10
・ B は 0 と 1 からなる
・ すべてのクエリについて 1 ≦ k ≦ 10

入力例1

0011010101
5
1 1
2 1
1 3
2 10
1 9

出力例1

0001101010
0110101010
0000011010
0000000000
0000000000

入力例2

0011100100
10
1 5
1 4
1 2
1 10
2 1
1 2
1 4
1 9
1 9
2 4

出力例2

0000000111
0000001110
0000111001
0000000000
0111001000
0000111001
0000001110
0000000000
0000000000
1001000000

問題一覧へ戻る

ページの先頭へ戻る