自然數冪和


伯努利數

伯努利數是一個這樣的數列:\(\{1,-\frac{1}{2},\frac{1}{6},0,-\frac{1}{30},0,\frac{1}{42},0,-\frac{1}{30},0,\dots\}\)

(所有大於\(2\)的奇數項都是\(0\))

滿足:

\[\begin{aligned} \sum_{k=0}^n \binom{n+1}{k} B_k = 0 \quad (n>0) \end{aligned} \]

換個方式寫:

\[\begin{aligned} \sum_{k=0}^n \binom{n}{k} B_k &= B_n \quad (n\neq 1) \end{aligned} \]

觀察上面的式子, 我們可以將\(\{B_i\}\)的EGF和\(\{1,1,1,\dots\}\)的EGF乘起來, 得到:

\[\begin{aligned} B(x) e^x &= B(x) + x \\ B(x) &= \frac{x}{e^x - 1} \end{aligned} \]

(左邊加的\(x\)是特殊處理\(n\neq 1\)的限制)

所以我們就可以用多項式求逆在\(O(n\log n)\)的時間內求出\(B_1\dots B_n\)了.

\(S_m(n) = \sum_{i=0}^{n-1} i^m\), 那么有:

\[S_m(n) = \frac{1}{m+1} \sum_{k=0}^m \binom{m+1}{k}B_k n^{m+1-k} \]

遞推

\((i+1)^{k+1}-i^{k+1}=\sum\limits_{j=0}^k\binom{k+1}{j}i^j\)累加得:

\[\begin{align*} (n+1)^{k+1}-1&=\sum_{i=1}^n\sum_{j=0}^k \binom{k+1}{j}i^j\\ &=\sum_{j=0}^k\binom{k+1}{j}\sum_{i=1}^n i^j \end{align*} \]

\(\sum\limits_{i=1}^{n}i^k\)拿出來:

\[\begin{align*} \sum_{i=1}^n i^k &= \frac{(n+1)^{k+1}-1-\sum_{j=0}^{k-1}\binom{k+1}{j}\sum_{i=1}^n i ^ j}{\binom{k+1}{k}}\\ &= \frac{(n+1)^{k+1}-1-\sum_{j=0}^{k-1}\binom{k+1}{j}\color{red}{\sum_{i=1}^n i ^j}}{k+1} \end{align*} \]

直接遞推即可。

差分

我們記一個序列的\(k\)次差分后的序列為\(\Delta_k\)

任何\(k\)次多項式的點值經過\(k+1\)次差分后都會變成全為\(0\)的序列,即\(\Delta_k\)均為\(0\)

我們對\(f(n)=n^k\)進行差分,設\(c_k\)為第\(0\)條對角線的第\(k\)項,那么有\(f(n)=\sum\limits_{i=0}^k c_i \binom{n}{i}\)
所以:

\[\begin{align*} \sum_{i=0}^n f(i) &= \sum_{i=0}^n\sum_{j=0}^{k} c_j \binom{i}{j}\\ &= \sum_{j=0}^k c_j \sum_{i=0}^n \binom{i}{j}\\ &= \sum_{j=0}^k c_j \binom{n+1}{j+1} \end{align*} \]

關於最后那個組合數的推導\(\sum_{i=0}^n \binom{i}{j}=\binom{n+1}{j+1}\),可以理解為:有\(j+1\)個球和\(n+1\)個盒子,枚舉最后一個球放的位置\(i+1\),剩下的球放置的方案就是\(\binom{i}{j}\)


拉格朗日插值

可以證明\(\sum\limits_{i=0}^n i^k\)是一個\(k+1\)次多項式,因此我們可以用插值來做。
先求出\(x=0\dots k+1\)的點值,然后將\(n\)帶入即可。
時間復雜度是\(O(k\log k)\)

Great_Influence說可以不用這么麻煩:
設多項式為\(\sum_{i=0}^{k+1}coef_i(x) x^i\),根據拉格朗日插值的那個式子得到:

\[coef_{p+1}(x)=coef_p(x)\times \frac{(x-p)(p-k)}{(x-p-1)(p+1)} \]

直接將得到的系數乘點值即可。

如果要做到\(O(k)\),線性篩出\(N^k\)即可(瓶頸在於快速冪, 質數個數的級別是\(\frac{k}{\log}\)的, 只對質數做快速冪, 時間復雜度就是\(O(k)\)的了)。


斯特林數

\[\begin{aligned} \binom{n}{k} = \frac{n^{\underline{k}}}{k!} = \frac{\sum\limits_{i = 0}^{k} \left[\begin{matrix} k \\ i \end{matrix}\right] (-1)^{k - i} n^i}{k!} \\ k! \binom{n}{k} = \sum_{i = 0}^{k} \left[\begin{matrix} k \\ i \end{matrix}\right] (-1)^{k - i} n^i \\ \\ n^k = k! \binom{n}{k} - \sum_{i = 0}^{\color{red}{k - 1}} \left[\begin{matrix} k \\ i \end{matrix}\right] (-1)^{k - i} n^i \end{aligned}\]

那么

\[\begin{aligned} \sum_{i = 0}^{n} i^k &= \sum_{i = 0}^{n} \left( k! \binom{i}{k} - \sum_{j = 0}^{k - 1} \left[\begin{matrix} k \\ j \end{matrix}\right] (-1)^{k - j} i^j \right) \\ &= k! \sum_{i = 0}^{n} \binom{i}{k} - \sum_{i = 0}^{n} \sum_{j = 0}^{k - 1} \left[\begin{matrix} k \\ j \end{matrix}\right] (-1)^{k - j} i^j \\ &= k! \binom{n + 1}{k + 1} - \sum_{j = 0}^{k - 1} \left[\begin{matrix} k \\ j \end{matrix}\right] (-1)^{k - j} \color{red}{\sum_{i = 0}^{n} i^j} \\ &= \frac{(n + 1)^{\underline{k + 1}}}{k + 1} - \sum_{j = 0}^{k - 1} \left[\begin{matrix} k \\ j \end{matrix}\right] (-1)^{k - j} \color{red}{\sum_{i = 0}^{n} i^j} \end{aligned} \]

至於\(\displaystyle\frac{1}{k+1}\),一定可以在\((n+1)^{\underline{k+1}}\)中除去。

所以直接\(O(k^2)\)預處理出第一類斯特林數即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM