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)\)

posted @ 2022-05-04 11:04  Prean  阅读(36)  评论(0)    收藏  举报
var canShowAdsense=function(){return !!0};