多项式对数函数(ln)

已知 A ( x ) A(x) A(x),求使得 B ( x ) = ln ⁡ A ( x ) B(x)=\ln A(x) B(x)=lnA(x)的 B ( x ) B(x) B(x)
考虑先求导,后积分
B ′ ( x ) = A ′ ( x ) A ( x ) B ( x ) = ∫ A ′ ( x ) A ( x ) d x B'(x)=\frac{A'(x)}{A(x)}\\ B(x)=\int\frac{A'(x)}{A(x)}dx B′(x)=A(x)A′(x)​B(x)=∫A(x)A′(x)​dx
附上求导和积分的公式
A ′ ( x ) = ∑ ( i + 1 ) a i + 1 x i ∫ A ( x ) d x = ∑ a i − 1 i x i A'(x)=\sum(i+1)a_{i+1}x^i\\ \int A(x)dx=\sum\frac{a_{i-1}}{i}x^i\\ A′(x)=∑(i+1)ai+1​xi∫A(x)dx=∑iai−1​​xi

P4725

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int g=3;
const int mod=998244353;
const int M=2100009;
int read(){int f=1,re=0;char ch;for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar());if(ch=='-'){f=-1,ch=getchar();}for(;isdigit(ch);ch=getchar()) re=(re<<3)+(re<<1)+ch-'0';return re*f;
}
int ksm(int a,int b){int ans=1;while(b){if(b&1) ans=(ll)ans*a%mod;a=(ll)a*a%mod;b>>=1;}return ans%mod;
}
int n,r[M],tmp[M],a[M],b[M],inv2,dera[M],inva[M];
void ntt(int *A,int lim,int type){for(int i=0;i<lim;i++) if(i<r[i]) swap(A[i],A[r[i]]);for(int mid=1;mid<lim;mid<<=1){int W=ksm(g,(mod-1)/(mid<<1));for(int R=mid<<1,j=0;j<lim;j+=R){int w=1;for(ll k=0;k<mid;k++,w=(ll)w*W%mod){int x=A[j+k],y=(ll)w*A[j+k+mid]%mod;A[j+k]=(x+y)%mod;A[j+mid+k]=(x-y+mod)%mod;}}}if(type==-1){reverse(A+1,A+lim);int inv=ksm(lim,mod-2);for(int i=0;i<lim;i++) A[i]=(ll)A[i]*inv%mod;}
}
void getinv(int a[],int b[],int len){if(len==1){b[0]=ksm(a[0],mod-2);return;}getinv(a,b,(len+1)>>1);int lim=1,l=0;while(lim<len+len) lim<<=1,l++;for(int i=0;i<lim;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));for(int i=0;i<len;i++) tmp[i]=a[i];for(int i=len;i<lim;i++) tmp[i]=0;ntt(tmp,lim,1),ntt(b,lim,1);for(int i=0;i<lim;i++) b[i]=(ll)b[i]*((2-(ll)tmp[i]*b[i]%mod+mod)%mod)%mod;ntt(b,lim,-1);for(int i=len;i<lim;i++) b[i]=0;
}
void getintegral(int a[],int b[],int len){//积分 for(int i=1;i<len;i++) b[i]=(ll)a[i-1]*ksm(i,mod-2)%mod;b[0]=0;
}
void getderivation(int a[],int b[],int len){//求导 for(int i=1;i<len;i++) b[i-1]=(ll)a[i]*i%mod;b[len-1]=0;
}
void getln(int a[],int b[],int len){getinv(a,inva,len);getderivation(a,dera,len);int lim=1,l=0;while(lim<len+len) lim<<=1,l++;for(int i=0;i<lim;i++) r[i]=(r[i>>1]>>1)|((i&1)<<(l-1));ntt(inva,lim,1),ntt(dera,lim,1);for(int i=0;i<lim;i++) inva[i]=(ll)inva[i]*dera[i]%mod;ntt(inva,lim,-1);getintegral(inva,b,len);
}
signed main(){n=read();for(int i=0;i<n;i++) a[i]=read();int lim=1;while(lim<=n) lim<<=1;getln(a,b,lim);for(int i=0;i<n;i++) printf("%d ",b[i]);printf("\n");return 0;
}

多项式对数函数(ln)相关推荐

  1. 多项式对数函数ln f(x)

    多项式对数函数ln⁡f(x)\ln f(x)lnf(x) 如果存在解必然有[x0]f(x)=1[ x ^ 0]f(x) = 1[x0]f(x)=1, 对ln⁡f(x)\ln f(x)lnf(x)求导, ...

  2. luogu P4726 多项式指数函数(模板题FFT、多项式求逆、多项式对数函数)

    luogu P4726 多项式指数函数(模板题FFT.多项式求逆.多项式对数函数) 手动博客搬家: 本文发表于20181127 08:39:42, 原地址https://blog.csdn.net/s ...

  3. luogu P4725 多项式对数函数 (模板题、FFT、多项式求逆、求导和积分)

    luogu P4725 多项式对数函数 (模板题.FFT.多项式求逆.求导和积分) 手动博客搬家: 本文发表于20181125 13:25:03, 原地址https://blog.csdn.net/s ...

  4. 【BZOJ】3456: 城市规划(多项式求ln)

    题解 在我写过分治NTT,多项式求逆之后 我又一次写了多项式求ln 我们定义一个数列的指数型生成函数为 \(\sum_{i = 0}^{n} \frac{A_{i}}{i!} x^{i}\) 然后这个 ...

  5. 多项式的ln、exp、快速幂和开根学习小记

    不妨又学习了一下多项式的求ln.exp.快速幂和开根操作. 这些操作比之前的求逆更上了一层台阶,应用同样很广. 多项式求逆等知识在我的博客里有讲:多项式的求逆.取模和多点求值学习小记 多项式ln 给出 ...

  6. 多项式对数函数|指数函数(多项式)

    多项式对数函数|指数函数 这个思路就是先求导然后再积分,这样就可以得到一个式子,对于多项式对数函数,我们就可以直接求解了,然后对于多项式指数函数还需要使用分治fft. 多项式对数: #include& ...

  7. 如何使用计算机中对数函数,excel对数函数LN,LOG函数等. 使用示例说明excel如何找到对数...

    excel的对数函数是什么? excel如何找到对数?首先让我们看一下什么是对数. 下面的屏幕截图: 第一行代表2的指数,第二行代表2的相应幂. 如果要在第二行中计算两个数字的乘积,可以通过添加相应的 ...

  8. 洛谷 P4725 【模板】多项式对数函数 ntt

    题目描述 给出 n−1n−1n-1 次多项式 A(x)A(x)A(x),求一个mod xnmodxnmod\ x^n 下的多项式 B(x)B(x)B(x) ,满足 B(x)≡lnA(x)B(x)≡ln ...

  9. 洛谷 3784(bzoj 4913) [SDOI2017]遗忘的集合——多项式求ln+MTT

    题目:https://www.luogu.org/problemnew/show/P3784 https://www.lydsy.com/JudgeOnline/problem.php?id=4913 ...

最新文章

  1. [HDU5828]Rikka with Sequence
  2. jquery的sortable拖拽排序问题,在页面上多次拖拽保存顺序之后,刷新页面,排序出现紊乱
  3. Unity3D脚本中文系列教程(七)
  4. 【Java例题】7.6文件题3-文本文件统计
  5. 1012 The Best Rank (25 分)【难度: 中 / 知识点: 排序 前缀和】
  6. java与html5的区别_HTML4和HTML5的区别
  7. Robot Framework 教程 (3) - Resource及关键字 的使用
  8. *在通配符及正则表达式中的差别
  9. 原创 | 面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!...
  10. vi定位到第一行,最后一行和任意行
  11. 数据库发展的三个阶段及特点
  12. 手把手教你搭建Hexo博客
  13. RocketMQTemplate发送带tags的消息
  14. mybatis第十话 - mybaits整个事务流程的源码分析
  15. 机器人(含自动驾驶汽车)成本和电脑手机相比有哪些差异化
  16. docker-compose Seata+Nacos部署
  17. 一篇文章让你掌握HTML+CSS
  18. GitLab 无法显示头像的解决方法
  19. YII2 扩展 读取excel模板写入数据并导出
  20. 7-32 哥尼斯堡的“七桥问题”(25 分)

热门文章

  1. 中国象棋程序elephanteye(象眼) word软件下载
  2. 企业网站建设是否真的对企业有价值?
  3. java querystring_Java URL encoding of query string parameters
  4. python 图片识别服装_Python爬取某东羽绒服数据,用可视化帮你挑选心仪的衣服...
  5. 地理信息系统 开源_国家地理将开源带到了旷野
  6. 自动电流镜布局 (ACML) 工具
  7. SONY SR系列笔记本 安装XP系统方法
  8. 单片机c语言ad与da转换实验报告,AD与DA转换实验18339.doc
  9. 扫描二维码下载APP文件在项目中的实现
  10. 程序猿告白微信小程序