(同 [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 \(,\)a3+b3=c3+d3$。
由於在該 \(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\) 個數。