.article-info-tag,button{text-transform:uppercase}.day,.postMeta,.postSticky{position:relative}.postTitle a:link,html{-webkit-tap-highlight-color:transparent}#blog-calendar,.code-copay-btn,.code-hljs-len,.hidden{visibility:hidden}#EntryTag,#blogTitle h1{margin-top:20px}#EntryTag a,.postSticky{background:#6fa3ef}#blogTitle h1 a:hover,.dayTitle a,a,a:active,a:link,a:visited{color:#5c8ec6}#calendar table a:hover,#navList a:hover,.postDesc a:hover,a:active,a:hover,a:link,a:visited,button{text-decora…ryTag a:visited{color:#666}#BlogPostCategory a,#EntryTag a{height:20px;line-height:20px;color:#fff!important;padding:3px 5px;border-radius:3px;margin:2px 5px 0;text-decoration:none;font-size:14px}#BlogPostCategory a:hover,#EntryTag a:hover{transition:all .3s linear 0s;opacity:.8}#topics .postDesc{padding-left:0;width:100%;text-align:left;color:#666;margin-top:5px;background:0 0}.feedbackListSubtitle-louzhu:after,.feedbackListSubtitle:after,.feedbackListSubtitle:before{top:11px;right:100%;left:-1

Luogu P4725 多项式 ln

\(\mathtt{Description}\)

\(\deg = n\) 的多项式 \(f\),求一多项式 \(g\),使 \(g= \ln f\)

\(998244353\) 取模。

\(\mathtt{restrictions:}1\le n \le 10^5\)

\(\mathtt{Solution}\)

\(\ln\) 显然是不好求的,我们思考如何转化。

考虑求导:\(\ln (x)'=\dfrac 1 x\)

\[\because g = \ln f(x) \]

由复合函数的求导法则:

\[g(f(x))'=g'(f(x))f'(x) \]

可得

\[g' = \frac {f'(x)} {f(x)} \]

求出 \(f\) 的导数和逆元,相乘可得 \(g'\),对 \(g'\) 积分可得 \(g\)

求导和积分公式:

\[f(x)=x^n,f'(x)=nx^{n-1},\int x^n \text{dx}=\dfrac{1}{n+1}x^{n+1} \]

\(\mathtt{Code}\)

//函数参数含义:
//dev(f,g,len) 求 f 的导数,结果为 g
//itg(f,g,len) 求 f 的积分,结果为 g
//Getln(f,g,len) 求 f 的 ln,结果为 g
//Getinv(f,g,len) 求 f 的逆元,结果为 g
//mul(f,g,r,len) 求 f 和 g 的卷积,结果为 r
//上述 len 表示在模 x^len 意义下进行
	inline void dev(const int f[],int g[],const int len) {
		for (int i = 1; i < len; ++i) g[i-1] = 1ll * f[i] * i % mod ;
		g[len-1] = 0  ;
	}

	inline void itg(const int f[],int g[],const int len) {
		for (int i = 1; i < len; ++i) g[i] = 1ll * f[i-1] * inv[i] % mod ;
		g[0] = 0 ; 
	}

	inline void Getln(const int f[],int g[],const int len) {
		static int A[N],B[N] ;
		dev(f,A,len),Getinv(f,B,len),mul(A,B,A,len<<1),itg(A,g,len),memset(A,0,len<<2),memset(B,0,len<<2);
	}

posted @ 2021-07-21 11:07  feicheng  阅读(20)  评论(0编辑  收藏  举报