一道偏结论的题。当 \(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+..)\) 了。
(咕咕咕)