BSOJ1522口胡
尝试用复杂的题面盖过题目简单的本质.jpg
众所周知 \(f(x)\) 是个多项式,设 \(f(x)=\sum_{i=0}^{k+1}f_ix^i\)。
\[g(x)=\sum_{i=1}^{x}\sum_{j=0}^{k+1}f_ji^j
\]
\[\sum_{j=0}^{k+1}f_j\sum_{i=1}^{x}i^j
\]
用伯努利数稍微处理一下即可(或者也可以大力 \(O(k^3)\) 插值)。
设 \(g(x)=\sum_{i=0}^{k+2}g_ix^i\)。
\[\sum_{i=0}^{n}\sum_{j=0}^{k+2}g_j(a+id)^j
\]
\[\sum_{j=0}^{k+2}g_j\sum_{i=0}^{n}(a+id)^j
\]
容易发现 \(\sum_{i=0}^{x}(a+id)^k\) 是 \(k+1\) 次多项式。
证明:
\[d^k\sum_{i=0}^{x}(\frac{a}{d}+i)^k
\]
后半部分相当于是幂和问题减去了一个前缀的幂和。前缀幂和是一个常数,所以当然是 \(k+1\) 次多项式。
所以我们只需要求出 \(k\) 个 \(g\) 即可。
\[g(x)=\sum_{i=1}^{x}i^k(n-i+1)=(n+1)(\sum_{i=1}^{x}i^k)-(\sum_{i=1}^{x}i^{k+1})
\]
这样就好做多了。
复杂度 \(O(k^2)\)。

浙公网安备 33010602011771号