#2947. Xor Shift

0
    ID: 2947 传统题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 6 上传者: 标签>AtCoderabc150FGESP 5级哈希位运算(复杂)

Xor Shift

Xor Shift

题目描述

给出两个长度为 NN 的非负整数序列 a={a0,…,aN−1}a=\{a_0,\ldots,a_{N-1}\} 和 b={b0,…,bN−1}b=\{b_0,\ldots,b_{N-1}\}。 Snuke 会选择一个整数 kk,使得 0 \leq k < N,以及一个不小于 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)。

What is $\text{ XOR }$?

整数 AA 与 BB 的 XOR,记作 A XOR BA \text{ XOR } B,定义如下:

当 A XOR BA \text{ XOR } B 用二进制表示时,2k2^k 位(k≥0k \geq 0)上的数字为 11 当且仅当 AA 或 BB 中恰有一个在该位上为 11,否则为 00。

例如,3 XOR 5=63 \text{ XOR } 5 = 6。(二进制:011 XOR 101=110011 \text{ XOR } 101 = 110。)

输入格式

标准输入的格式如下: NN a0a_0 a1a_1 ...... aN−1a_{N-1} b0b_0 b1b_1 ...... bN−1b_{N-1}

输出格式

输出所有使得 a′a' 与 bb 相等的对 (k,x)(k, x),每对占一行,按 kk 的升序输出(对于相同 kk 的对按 xx 的升序输出)。 如果不存在这样的对,则输出应为空。

3
0 2 1
1 2 3
1 3
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

提示

1≤N≤2×1051 \leq N \leq 2 \times 10^5 0 \leq a_i,b_i < 2^{30} 输入中的所有数值均为整数。如果 (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′=ba' = b.
可能没有满足条件的对。

标签: AtCoder|abc150F

来源

AtCoder|abc150F