atcoder#ABC150F. [ABC150F] Xor Shift

[ABC150F] Xor Shift

配点 : 600600

問題文

非負整数からなる長さ NN の数列 a={a0,,aN1}a=\{a_0,\ldots,a_{N-1}\}b={b0,,bN1}b=\{b_0,\ldots,b_{N-1}\} が与えられます。

すぬけ君は 0k<N0 \leq k < N を満たす整数 kk と、00 以上の整数 xx を決めて、新しく長さ NN の数列 a={a0,,aN1}a'=\{a_0',\ldots,a_{N-1}'\} を次のようにして作ります。

  • ai=ai+kmodN XOR xa_i'= a_{i+k \mod N}\ XOR \ x

aa'bb と等しくなるような (k,x)(k,x) の組を全て求めてください。

$\text{ XOR }$ とは

整数 A,BA, B のビットごとの排他的論理和 a XOR ba \text{ XOR } b は、以下のように定義されます。

  • A XOR BA \text{ XOR } B を二進表記した際の 2k2^k (k0k \geq 0) の位の数は、A,BA, B を二進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、そうでなければ 00 である。

例えば、3 XOR 5=63 \text{ XOR } 5 = 6 となります (二進表記すると: 011 XOR 101=110011 \text{ XOR } 101 = 110 )。

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 0ai,bi<2300 \leq a_i,b_i < 2^{30}
  • 入力中のすべての値は整数である。

入力

入力は以下の形式で標準入力から与えられる。

NN

a0a_0 a1a_1 ...... aN1a_{N-1}

b0b_0 b1b_1 ...... bN1b_{N-1}

出力

aa'bb が等しくなるような (k,x)(k,x) の組を、11 行に 11 組ずつ、kk の昇順 (kk が等しいものは xx の昇順) にすべて出力せよ。

このような組が存在しない場合の出力は空でよい。

3
0 2 1
1 2 3
1 3

(k,x)=(1,3)(k,x)=(1,3) のとき、

  • a0=(a1 XOR 3)=1a_0'=(a_1\ XOR \ 3)=1
  • a1=(a2 XOR 3)=2a_1'=(a_2\ XOR \ 3)=2
  • a2=(a0 XOR 3)=3a_2'=(a_0\ XOR \ 3)=3

となり、aa'bb と等しくなります。

5
0 0 0 0 0
2 2 2 2 2
0 2
1 2
2 2
3 2
4 2
6
0 1 3 7 6 4
1 5 4 6 2 3
2 2
5 5
2
1 2
0 0

条件を満たすような組が存在しないこともあります。