Luogu P5408 模板 第一類斯特林數 行

2022-04-02 22:25:33 字數 899 閱讀 8707

為什麼要做這題呢,當然是有用啊qwq

首先我們考慮非常經典的式子:

\[x^}=\sum_i \left[^n_i\right] x^i

\]然後上倍增:

\[x^}=x^}(x+n)^}

\]相當於我們已經有了乙個多項式\(f(x)\),現在要求另乙個多項式\(f(x+c)\)

\[f(x+c)=\sum_i f_i(x+c)^i

\]\[=\sum_i x_i\sum_j f_j\times c_i^j\times c^

\]\[=\sum_i \frac \sum_j j!\times f_j\times\frac}

\]發現此時\(\frac}\)不太好處理,因此我們把它和\(f\)都反過來做一遍卷積然後反回去即可

然後注意這是\(n\mod 2=0\)的情況,\(n=1\)是要暴力多乘上乙個\((x+n)\)

複雜度為\(t(n)=t(n/2)+o(n\log n)=t(n\log n)\)

#include#include#define ri register int

#define ci const int&

using namespace std;

const int n=1<<20,mod=167772161;

int n,lim,f[n],fact[n],inv[n];

inline int sum(ci x,ci y)

inline int sub(ci x,ci y)

inline int quick_pow(int x,int p=mod-2,int mul=1)

inline void init(ci n)

namespace poly

};int main()

洛谷P5408 第一類斯特林數 行

給定 n 1 leq n le 262144 對於所有的整數 i in 0,n 求出 pmod 考慮第一類斯特林數的生成函式 sum x k x 其中生成函式的 k 次項的係數就是我們要求的第一類斯特林數。考慮倍增。x x x n 記 f x x 假設我們已經知道了 f x 如何去求出 f x n ...

Python 函式是第一類物件

在很多資料中,經常會看到這樣一句話 python 中的函式是第一類物件 這裡所說的第一類物件,其實是指函式作為乙個物件,與其他物件具有相同的地位。關於這一點,guido 曾提過 first class everything 他對 python 的乙個發展目標就是所有的物件都是第一類物件。也就是說,所...

Python 函式的第一類物件 使用

函式的第一類物件及使用 第一類物件 特殊點 可以當做值被賦值給變數 def func print 1 print func a func a 2.可以當做元素存放在容器中 def func print 1 lst func,func,func for i in lst i 3.函式名可以當做函式的引...