簡單的介紹一下吧,斯特靈數其實有不少好玩的性質和擴展的。優化
設\(S(n, m)\)表示把\(n\)個不一樣的球放到\(m\)個相同的盒子裏,且不容許盒子爲空的方案數spa
稱\(S\)爲第二類斯特靈數class
考慮第\(n\)個球放到了哪裏擴展
第一種狀況是本身佔一個盒子,方案爲\(S(n - 1, m - 1)\)方法
第二種狀況是和以前的元素共佔\(m\)個盒子,方案爲\(S(n - 1, m) * m\),最後的係數是考慮放在不一樣位置。di
這裏咱們認爲{1}{2 4}{3}與{1}{2}{3 4}是不一樣的方案display
而{1}{2 4}{3}與{1}{3}{2 4}是相同的方案math
綜上枚舉
\(S(n, m) = S(n - 1, m - 1) + S(n - 1, m) * m\)play
邊界條件\(S(0, 0) = 1\)
\(S(n, m) = \frac{1}{m!} \sum_{k = 0}^m (-1)^k C(m, k) (m - k)^n\)
也比較好理解,咱們去枚舉一個空盒子的個數
答案 = 無視空盒子放的方案 - 至少有一個盒子爲空的方案 + 至少有兩個盒子爲空的方案 + \(\dots\)
顯然,這個式子能夠用FFT優化,所以咱們能夠在\(O(nlogn)\)的複雜度內獲得一行的斯特靈數
\[n^k=\sum_ { i=0}^k S(k,i)×i!×C_{n}^i\]
\(S(n, 2) = 2^{n - 1} - 1\)