[NOI Online 2021 提高组] 愤怒的小N

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

(咕咕咕)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章