题解:P5627 【AFOI-19】sum与prod

\[\sum_{i=1}^{2^{n}}\log_{2}{(\prod_{j = 1}^{i}lowbit(j))}\\ \iff \sum_{i=1}^{2^{n}}\sum_{j=1}^{i}\log_{2}{(lowbit(j))}\\ \]

我们考虑拆贡献,每一个 \(\log_2(lowbit(j))\) 的贡献是 \(2^n - j + 1\)

则:

\[\sum_{i=1}^{2^{n}}(2^n - i + 1)\log_{2}{(lowbit(j))}\\ \iff (2^n + 1)\sum_{i=1}^{2^{n}}\log_{2}{(lowbit(j))} - \sum_{i=1}^{2^{n}}i\log_{2}{(lowbit(j))}\\ \]

我们考虑这个式子:

\[\sum_{i=1}^{2^{n}}\log_{2}{(lowbit(j))} \]

可以二进制拆位来看,确定 \(lowbit\) 某一位后,前面随便放,后面全是零,其贡献便是这样能有多少个数,然后我们可以想到,这就是 \(n\) 为二进制有多少个数,即:

\[\sum_{i=1}^{2^{n}}\log_{2}{(lowbit(j))} = 2^n - 1 \]

而后面的那个式子,我们依旧拆位来看,这就可以等效为确定某一位是 \(lowbit\) 后,看 \(lowbit\) 是这个数的有多少个,并求和。

比如,我令当前 \(\log_2(lowbit(j)) = x\) 那么,符合条件的数就是 \([2^x, (2^n - 1) - (2^x - 1)]\)

等差数列求和一下,我们就有:

\[\sum_{i=1}^{2^{n}}i\log_{2}{(lowbit(j))}\\ \iff \sum_{i=1}^{2^{n} - 1}i\log_{2}{(lowbit(j))} + n \times 2^n\\ \iff \frac{\sum_{i = 0} ^ {n - 1} i \times (2^n \times 2^{n - 1 - i})}{2} + n \times 2^n\\ \iff 2 ^ {n - 1}\sum_{i = 0} ^ {n - 1}i \times 2^{n - 1 - i} + n \times 2^n\\ \]

而中间的这个式子我们可以错位相减一下:

\[令 a = \sum_{i = 0} ^ {n - 1}i \times 2^{n - 1 - i}\\ \therefore 2a = \sum_{i = 0} ^ {n - 1}i \times 2^{n - i}\\ \therefore a = 2^{n - 1} + \sum_{i=1}^{n-2} 2^i - (n - 1)\\ \iff a = 2^n - n - 1 \]

\[原式=\\ 2^n - 1 + 2 ^ {n - 1}(2^n - n - 1) + n \times 2^n \]

这只需快速幂即可求出。

posted @ 2025-09-16 19:43  yanbinmu  阅读(5)  评论(0)    收藏  举报