P5591
小猪佩奇学数学
先把这个转化为整除形式,然后单位根反演暴力推。
$$
\begin{aligned}
& \sum _ { i = 0 } ^ { n } \binom { n } { i } p ^ i \left \lfloor \dfrac { i } { k } \right \rfloor
\\
= & \sum _ { i = 0 } ^ { n } \binom { n } { i } p ^ i \dfrac { i - i \bmod k } { k }
\\
= & \dfrac { 1 } { k } \sum _ { i = 0 } ^ { n } i \binom { n } { i } p ^ i - \dfrac { 1 } { k } \sum _ { i = 0 } ^ { n } \binom { n } {i} p ^ i \sum _ { j = 0 } ^ { k - 1 } j [ i \equiv j \pmod { k } ]
\\
= & \dfrac { n } { k } \sum _ { i = 1 } ^ { n } \binom { n - 1 } { i - 1 } p ^ i - \dfrac { 1 } { k ^ 2 } \sum _ { i = 0 } ^ { n } \binom { n } {i} p ^ i \sum _ { j = 0 } ^ { k - 1 } j \sum _ { x = 0 } ^ { k - 1 } \omega _ { k } ^ { ( i - j ) x}
\\
= & \dfrac { n p } { k } \sum _ { i = 0 } ^ { n - 1 } \binom { n - 1 } { i } p ^ i 1 ^ { n - 1 - i } - \dfrac { 1 } { k ^ 2 } \sum _ { j = 0 } ^ { k - 1 } j \sum _ { i = 0 } ^ { n } \binom { n } {i} p ^ i \sum _ { x = 0 } ^ { k - 1 } \omega _ { k } ^ { - x j } \omega _ { k } ^ { x i }
\\
= & \dfrac { n p } { k } (p + 1 ) ^ { n - 1 } - \dfrac { 1 } { k ^ 2 } \sum _ { j = 0 } ^ { k - 1 } j \sum _ { x = 0 } ^ { k - 1 } \omega _ { k } ^ { - x j } \sum _ { i = 0 } ^ { n } \binom { n } {i} p ^ i \omega _ { k } ^ { x i }
\\
= & \dfrac { n p } { k } (p + 1 ) ^ { n - 1 } - \dfrac { 1 } { k ^ 2 } \sum _ { j = 0 } ^ { k - 1 } j \sum _ { x = 0 } ^ { k - 1 } \omega _ { k } ^ { - x j } \sum _ { i = 0 } ^ { n } \binom { n } {i} ( p \omega _ { k } ^ { x }) ^ i 1 ^ { n - i }
\\
= & \dfrac { n p } { k } (p + 1 ) ^ { n - 1 } - \dfrac { 1 } { k ^ 2 } \sum _ { j = 0 } ^ { k - 1 } j \sum _ { x = 0 } ^ { k - 1 } \omega _ { k } ^ { - x j } (p \omega _ { k } ^ { x } + 1 ) ^ n
\\
= & \dfrac { n p } { k } (p + 1 ) ^ { n - 1 } - \dfrac { 1 } { k ^ 2 } \sum _ { x = 0 } ^ { k - 1 } (p \omega _ { k } ^ { x } + 1 ) ^ n \sum _ { j = 0 } ^ { k - 1 } j \omega _ { k } ^ { - x j }
\\
= & \dfrac { n p } { k } (p + 1 ) ^ { n - 1 } - \dfrac { 1 } { k ^ 2 } \sum _ { x = 0 } ^ { k - 1 } (p \omega _ { k } ^ { x } + 1 ) ^ n \sum _ { j = 0 } ^ { k - 1 } j ( \omega _ { k } ^ { - x } ) ^ j
\end{aligned}
$$
可以 $ O ( k ^ 2 )$ 算了。
我们考虑快速计算 $ \sum _ { j = 0 } ^ { k - 1 } j ( \omega _ { k } ^ { - x }) ^ j $,看起来大概是个 Whk 数列题。
我们设 $ F ( x , y ) = \sum _ { i = 0 } ^ { y } i x ^ i $,同时再设 $ G ( x , y ) = \sum _ { i = 0 } ^ { y } x ^ i$,然后想办法找到封闭形式解决这个问题。
下面的推导默认 $ x \ne 1 $。
$ G ( x , y ) $ 的封闭形式很简单:
$$ x G ( x , k ) + 1 = G ( x , k ) + x ^ { k + 1 } $$
可以导出:
$$ G ( x , y ) = \dfrac { x ^ { k + 1 } - 1 } { x - 1 } $$
你当然可以看成简单的等比数列求和,不过我比较无聊,主要想把这个东西用到下面。
$$ x F ( x , k - 1 ) + G ( x , k ) - 1 = F ( x , k ) = F ( x , k - 1 ) + k x ^ k $$
可以导出:
$$ F ( x , k - 1 ) = \dfrac { k x ^ { k } + 1 - ( x ^ { k + 1 } - 1) / ( x - 1 ) } { x - 1 } $$
如果 $ x = 1 $ 的话,这个东西就跟简单了:
$$ F ( x , y ) = \sum _ { i = 0 } ^ { y } i = \dfrac { y ( y + 1 ) } { 2 }$$
而最后我们要求的就是 $ F ( \omega _ { k } ^ { - x } , k - 1 )$。
现在复杂度就是 $ O ( k \log n ) $ 的了。
代码:
1 |
|