求和 fft,表示式化簡

2022-02-18 15:26:53 字數 1033 閱讀 8410

$f(n)=\sum\limits_^ \sum\limits_^ s(i,j) \times 2^j \times j!$

其中$s(i,j)$為第二類斯特林數,公式為$s(i,j)=\frac \sum\limits_^ (-1)^k c(j,k) (j-k)^i$

求$f(n)$,$n<=100000$,答案對$998244353(=2^ \times 7 \times 17 + 1)$取模

$f(n)=\sum\limits_^ \sum\limits_^ 2^j \times \sum\limits_^ (-1)^k \times \frac \times (j-k)^i$

$=\sum\limits_^ \sum\limits_^ 2^j \times j! \times \sum\limits_^ \frac \times \frac$

$=\sum\limits_^ 2^j \times j! \times \sum\limits_^ \frac^(j-k)^i} \times \frac$

可以發現,$\sum\limits_^(j-k)^i$項就是乙個等比數列求和,可以快速冪求出。

那麼兩個分數分別只與j-k和k有關了,相乘的話,就是卷積形式fft求出,列舉最外層j即可。

update10/04:

終於抽出時間碼完啦,少打了乙個等號調了半天~

1 #include2

#define mod 998244353

3#define int long long

4int rev[400005],bin=1,n,fac[100005],inv[100005],invv[100005],inv,sumpw[100005];5

int a[400005],b[400005

],sum;

6int pow(int b,int t,int a=1)

7void ntt(int *a,int

opt)

15if(opt==-1)for(int i=0;imod;16}

17main()

view code

sympy 表示式變換和化簡

simplify 可以對數學表示式進行化簡,呼叫sympy內部的多種表示式變換函式來對其化簡 1.radsimp radsimp 對表示式的分母進行有理化,結果中的分母部分不含無理數.例 也可以以對帶符號的表示式進行處理 2.ratsimp ratsimp 對表示式中的分母進行通分運算,即將表示式轉...

中綴表示式與前 字尾表示式轉化簡單的技巧

35,15,80,70,20,字尾表達方式 35 15 80 70 20 25 中綴表達方式 35,15,80,70,20 字首表達方式人的思維方式很容易固定 正如習慣拉10進製。就對2,3,4,8,16等進製不知所措一樣 人們習慣的運算方式是中綴表示式。而碰到字首,字尾方式。迷茫其實僅僅是一種表示...

matlab如何化簡表示式 多項式?

分步閱讀 本片經驗講述一下如何利用matlab化簡表示式。再利用matlab符號計算時,其結果往往顯得繁冗,其中乙個很重要的原因是 計算結果中有些表示式會多次出現在不同地方。為了使表示式簡便,我們需要運用相關指令對多表示式進行化簡。相關指令簡介 這裡我先介紹一下採用公因子發簡化表示式的相關置換指令。...