数列 A から数列 B を以下で生成
( は bitwise xor とする)
まず、数列 A を多項式
と表す。 となれば、FFT を用いて で計算可能。
ここで、 を の ビット目とし、
とする。例を挙げると、、 となる。これは、xor がビットごとの計算である性質を表している。
次に、 と は同値である。、つまり のとき、 を乗算とすると上記の性質を持つようになり、 となる。これによって計算可能。実装は高速メビウス、ゼータ変換に似た形で可能。
参考
説明
Fast Walsh Hadamard Transforms and it's inner workings - Codeforces
実装