伯努利數\(b_i\)的生成函式定義如下
\[b(z) = \frac = \sum_ ^ b_i \times \frac
\]一次多項式求逆即可快速計算\(b_i\)
那麼它有啥用呢
可以用來計算自然數冪和
我們記\[s_p(n) = \sum_ ^ i^p
\]那麼
\[\begin
a(z,n) &= \sum_^ s_p(n) \times \frac\\
&= \sum_^ \sum_^ \frac\\
&= \sum_^ e^ = \frac}-1}\\
&= \frac \times \frac - 1}\\
&= b(z) \times \frac - 1}\\
&= \sum_^ b_j \times \frac} \times (\sum_^\frac)\\
&= \sum_^ (\sum_^ b_j \times \frac} \times \frac})\\
&= \sum_^ z^p \times (\sum_^ \frac}})\\
&= \sum_^ z^p \times \frac \times \frac \times (\sum_^ b_j \times \binom \times n^)\\
\end
\]對比係數不難發現
\[s_p(n) = \frac \times \sum_^ \binom \times b_j \times n^
\]一道簡單的應用
2018 multi-university training contest 4 delighful formulas
根據題意列出式子:
\[ans = \sum_ ^ ^ }
\]莫比烏斯反演:
\[\begin
ans & = \sum_ ^ ^ }} \\
& = \sum_ ^ } \sum_ ^ }\\
\end
\]定義 \(f\):
\[f_p(n) = \sum_ ^
\]顯然 \(f_p\) 是 \(p + 1\) 階多項式:
\[f_p(n) = \sum_ ^ n ^ i}
\]利用 \(f\) 化簡原式:
\[\begin
ans & = \sum_ ^ } } \\
& = \sum_ ^ } \sum_ ^ (id) ^ j}} \\
& = \sum_ ^ d ^ j \sum_ ^ } }} \\
& = \sum_ ^ d ^ j f_j(\frac)}} \\
& = \sum_ ^ d ^ j \sum_ ^ (\frac ) ^ k}}} \\
& = \sum_ ^ ^ \sum_ ^ a_ n ^ k}}} \\
\end
\]定義 \(g\):
\[g_i = \sum_ ^ \sum_ ^ a_ n ^ k}
\]看題解發現這個是可以算的,只需要用伯努利數展開一下
\[\begin
g_i &= \sum_ ^ \sum_ ^ a_ n ^ k}\\
&= \sum_ ^ \sum_ ^ [j - k = i] b_ \times \frac \times b_ \times \frac \times n ^ k\\
&= k! \times \frac} \times \sum_ ^ \sum_ ^ [j - k = i] \frac} \times \frac\\
\end
\]容易發現這是乙個卷積形式,ntt一次即可
那麼答案就是
\[\begin
ans & = \sum_ ^ } \\
& = \sum_ ^ } \\
& = \sum_ ^ } \\
\end
\]\(o(km)\)計算即可
總複雜度是\(o(k(logk + m))\)
code
伯努利數學習筆記
定義伯努利數列 b n 滿足 b 0 1,sum nb i 0 n 0 可以發現定義式裡面包含了 b n 這一項,於是把 b n 提出來 b n sum b i n 1 b n sum b i b n frac sum b i 直接用定義式求是 o n 2 的複雜度 把定義式的迴圈上界減一,得 su...
伯努利數學習筆記
定義伯努利數列 b n 滿足 b 0 1,sum nb i 0 n 0 可以發現定義式裡面包含了 b n 這一項,於是把 b n 提出來 b n sum b i n 1 b n sum b i b n frac sum b i 直接用定義式求是 o n 2 的複雜度 把定義式的迴圈上界減一,得 su...
學習筆記 伯努利數
b n n 0 frac 1 sum binom i b i 同時有 hat x sum b i frac frac x 所以可以使用多項式求逆求出伯努利數。設自然數冪和函式 s k n sum i k 那麼有 s k n frac 1 sum k binomi b i n 設 hat n x su...