题解: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
\]
这只需快速幂即可求出。

浙公网安备 33010602011771号