$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 #include2view code#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()
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符號計算時,其結果往往顯得繁冗,其中乙個很重要的原因是 計算結果中有些表示式會多次出現在不同地方。為了使表示式簡便,我們需要運用相關指令對多表示式進行化簡。相關指令簡介 這裡我先介紹一下採用公因子發簡化表示式的相關置換指令。...