Luogu5395 模板 第二類斯特林數 行

2022-05-11 04:00:33 字數 922 閱讀 6286

problem

一句話題意:求\(_^n\beginn\\i\end\)

根據第二類斯特林數的展開式,有

\[\beginn\\k\end=\frac\sum_^k(-1)^i\begink\\i\end(k-i)^n

\]具體證明可以看這裡

進一步整理,式子化為

\[\beginn\\k\end=\sum_^k\frac\times \frac

\]可以發現這是乙個卷積的形式

構造多項式

\[f(x)=\sum_^n\fracx^i

\]\[g(x)=\sum_^n\fracx^i

\]\[s(x)=f(x)*g(x)

\]則\(s(x)\)的\(k\)次項係數即為\(\beginn\\k\end\)

預處理階乘的逆元

本題的模數有原根\(3\),所以直接用\(ntt\)做卷積就可以了

時間複雜度\(o(n\log n)\)

#include #include #include #include #include #include #define inv(x) (fastpow((x),mod-2))

using namespace std;

typedef long long ll;

const int maxn=200005;

const ll mod=167772161,g=3,ig=55924054;

int n;

ll a[maxn<<2],b[maxn<<2],ifac[maxn];

ll fastpow(ll a,ll b)

return re;

}int len;

int rev[maxn<<2];

void ntt(ll *f,int type)

P5395 模板 第二類斯特林數 行

多項式乘法練習題 p5395 模板 第二類斯特林數 行 我們設 s begin n m end 考慮第二類斯特林數的通項式 s sum m 1 ic i frac sum m 1 i frac frac sum m frac cdot frac 可以發現這是乙個卷積的形式。我們設 hat sum f...

模板 第二類斯特林數 列

從通項公式入手好像不行了。法一 直接從定義入手 把n個球劃分成m個等價類 假設等價類兩兩不同,最後除以m!直接上egf,a 1 i x i a m的i次項係數,再乘上i!再除以m!法二 從遞推公式入手 s n,m s n 1,m 1 m s n 1,m 設ogf s m x 是第m列二斯的ogf,則...

第二類斯特林數模板

第二類斯特林數s n m s n,m 表示的是把 n 個不同的小球放在 m 個相同的盒子裡方案數。遞推式子如下 初始化 s 0 0 1s n,m s n 1,m 1 ms n 1,m s n m s n 1,m 1 ms n 1,m const ll mod 1e9 7 ll s maxn maxn...