#AT1250. 异或变换

异或变换

配点 : 600600 点

問題文

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

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

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

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

$\text{ XOR }$ とは

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

  • A XOR BA \text{ XOR } B を二進表記した際の 2k2^k (k≥0k \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 )。

制約

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

入力

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

NN

a0a_0 a1a_1 ...... aN−1a_{N-1}

b0b_0 b1b_1 ...... bN−1b_{N-1}

出力

a′a' と 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

となり、a′a' は 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

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