Yuhao Du Contest 7 - Junk Problem
(同 [COTS/CETS 2021] 菜 Jelo)
假设有 \(2n\) 位,考虑把每个数分成前 \(n\) 位和后 \(n\) 位。
先构造一个 \(2^n\) 元有乘法、加法的有限域,这个可以通过找一个不可约多项式构造,见 P3923。
然后对于 \(x=[0,2^n-1]\),前 \(n\) 位填 \(x\),后 \(n\) 位填 \(x^3\) 在有限域运算下的值,构造出一个 \(2n\) 位的数。
这样如果两个 pair \((a,b),(c,d)\) 的 xor 相等,就需要满足 \(a+b=c+d\),\(a^3+b^3=c^3+d^3\)。
由于在该 \(2^n\) 有限域下加法等同与 xor,可以推出 \(a^3+b^3=c^3+d^3 \to ab(a+b) = cd(c+d) \to ab=cd\)。
由于同时有 \(ab=cd\) 和 \(a+b=c+d\),则 \(\{a,b\}\) 和 \(\{c,d\}\) 都是方程 \(x^2-(a+b)x+ab\) 的解,而这个方程只有至多两个解,也就说明 \(\{a,b\} = \{c,d\}\)。
那么这样构造就不会有两个不同的 pair 的 xor 相同,并且构造了 \(2^n\) 个数。