一道偏結論的題。當 \(n=2^{k+1}\) 時
\[\sum_{i=0,\text{popcount}(i)\equiv 0\pmod 2}^{2^{k+1}-1}i^k=\sum_{i=0,\text{popcount}(i)\equiv 1\pmod 2}^{2^{k+1}-1}i^k
\]
採用歸納法證明(後文爲方便以 \(=0/1\) 表示 \(\equiv 0/1\))。當 \(k=0\) 時,結論顯然成立;
當 \(k>0\) 時,欲證明結論,先移項:
\[\sum_{i=0,\text{popcount}(i)=0}^{2^{k+1}-1}i^k-\sum_{i=0,\text{popcount}(i)=1}^{2^{k+1}-1}i^k=0
\]
對於前綴相同的二進制 \((\cdots 0)\) 和 \((\cdots 1)\) 均出現,僅最低位不同,考慮這樣枚舉
\[\sum_{i=0}^{2^k-1}c_i\times \left((2i+1)^k-(2i)^k\right)=0
\]
\(c_i\) 爲 \(+1\) 或 \(-1\),取決於前綴 \(i\) 中 1
的個數。不難發現 \(c_i=(-1)^{\text{popcount}(i)}\)
所以得到:
\[\sum_{i=0}^{2^k-1}(-1)^{\text{popcount}(i)}\left((2i+1)^k-(2i)^k\right)=0
\]
展開得到:
\[\sum_{i=0}^{2^k-1}(-1)^{\text{popcount}(i)}\sum_{j=0}^{k-1}{k\choose j}(2i)^j=0
\]
對於 \(\text{popcount}(i)\) 分組,就變成:
\[\sum_{j=0}^{k-1}2^j{k\choose j}\sum_{i=0,\text{popcount}(i)=0}^{2^k-1}i^j=\sum_{j=0}^{k-1}2^j{k\choose j}\sum_{i=0,\text{popcount}(i)=1}^{2^k-1}i^j\ \ (*)
\]
由歸納,當 \(k'<k\) 時:
\[\sum_{i=0,\text{popcount(i)}=0}^{2^{k'+1}-1}i^{k'}=\sum_{i=0,\text{popcount(i)}=1}^{2^{k'+1}-1}i^{k'}
\]
引理:
\[\sum_{i=0,\text{popcount(i)}=0}^{t\times 2^{k'+1}-1}i^{k'}=\sum_{i=0,\text{popcount(i)}=1}^{t\times 2^{k'+1}-1}i^{k'},\ t\in \Z
\]
證明引理,我們只需要證明下式:
\[\sum_{i=t\times 2^{k'+1},\text{popcount}(i)=0}^{(t+1)\times 2^{k'+1}-1}i^{k'}=\sum_{i=t\times 2^{k'+1},\text{popcount}(i)=1}^{(t+1)\times 2^{k'+1}-1}i^{k'}
\]
我們同樣可以歸納,這裏省略掉部分細節。改寫一下:
\[\sum_{i=0,\text{popcount}(i)=0}^{2^{k'+1}-1}(i+t\times 2^{k'+1})^{k'}=\sum_{i=0,\text{popcount}(i)=1}^{2^{k'+1}-1}(i+t\times 2^{k'+1})^{k'}
\]
同樣展開:
\[\sum_{i=0,\text{popcount}(i)=0}^{2^{k'+1}-1}\sum_{j=0}^{k'}{k'\choose j}i^j(t\times 2^{k'+1})^{k'-j}=\sum_{i=0,\text{popcount}(i)=1}^{2^{k'+1}-1}\sum_{j=0}^{k'}{k'\choose j}i^j(t\times 2^{k'+1})^{k'-j}
\]
\[\Rightarrow\sum_{j=0}^{k'}(t\times 2^{k'+1})^{k'-j}{k'\choose j}\sum_{i=0,\text{popcount}(i)=0}^{2^{k'+1}-1}i^j=\sum_{j=0}^{k'}(t\times 2^{k'+1})^{k'-j}{k'\choose j}\sum_{i=0,\text{popcount}(i)=1}^{2^{k'+1}-1}i^j
\]
由歸納假設每一項都相等,由此引理得證。
由上,對比每一項,能直接得到 \((*)\) 式成立。故結論成立
推導過程中,我們甚至能知道
\[\sum_{i=0,\text{popcount}(i)=0}^{t\times 2^{k+1}-1}i^k=\sum_{i=0,\text{popcount}(i)=1}^{t\times 2^{k+1}-1}i^k
\]
成立。這樣我們就可以將複雜度從 \(\mathcal O(\log_2 nk^2)\) 降成 \(\mathcal O(k^3+..)\) 了。
(咕咕咕)