多項式乘法練習題
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_^\fracx^i,\hat=\sum_^\fracx_i,\hat=\sum_^s_i\cdot x_i\) 。
我們有 \(\hat=\hat\cdot \hat\) ,直接上 \(ntt\) 即可。
考慮怎麼證明通項式。
由定義可知 \(s_\) 表示 \(n\) 個數恰好分入 \(m\) 個集合的方案數。
考慮容斥。
我們列舉 \(i\) 表示有 \(i\) 個集合一定不選,方案數為 \(c_m^i\) ,其他的任意放入剩下的 \(m-i\) 個集合中,方案數為 \((m-i)^n\) ,由於集合是不區分的,所以還要除以 \(m!\) 。
加上容斥係數,我們即可得到上方的通項式。
#include#define del(a,i) memset(a,i,sizeof(a))
#define ll long long
#define inl inline
#define il inl void
#define it inl int
#define ill inl ll
#define re register
#define ri re int
#define rl re ll
#define mid ((l+r)>>1)
#define lowbit(x) (x&(-x))
#define inf 0x3f3f3f3f
using namespace std;
templateil read(t &x)
templateil _print(t x)
templateil print(t x)
ll mul(ll a,ll b,ll mod)
it qpow(int x,int m,int mod)
return res;
}const int maxn = 8e5+5,mod = 167772161,g = 3,ig = 55924054;
int n,lim=1,len,rev[maxn],a[maxn],b[maxn],inv[maxn],ifac[maxn];
it add(int x,int y)
it mul(int x,int y)
il ntt(int *a,int ty)
Luogu5395 模板 第二類斯特林數 行
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 ...
模板 第二類斯特林數 列
從通項公式入手好像不行了。法一 直接從定義入手 把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...