https://blog.csdn.net/semiwaker/article/details/73251486

已知$B(x)$求:$A(x)=e^{B(x)}$

根据麦克劳林展开:$e^{B(x)}=1+\frac{B(x)}{1!}+\frac{{B(x)}^2}{2!}+...+\frac{{B(x)}^n}{n!}$

用到指数函数的时候,就是推出式子是麦克劳林展开的时候luoguP4841 城市规划

前置知识:

1.牛顿迭代

至于g(f(x))没有什么具体表达式当然也是没有办法算的。

关于泰勒展开泰勒公式_百度百科

思路就是用某一个点的n阶导数和本身的函数值,来无限逼近整个函数的值

后面的麦克劳林展开用的也比较多

第一点非常关键,

就是,我们这里要求F(x),所以不妨把F(x)看做变量x,这样,A(x)就是常数,

反正,式子就是:g(f)=f^2-A,直接求导即可

(至于多项式对数函数的求导,那个是把x看做自变量(G(x)是一次的,再看成自变量就没了。。))

2.多项式对数函数

学习笔记]多项式对数函数

正题

代码:

注意lnG(X)这里,必须是mod x^n的意义下的

#include<bits/stdc++.h>
#define il inline
#define reg register int
#define numb (ch^'0')
using namespace std;
typedef long long ll;
il void rd(int &x){char ch;bool fl=false;while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true);for(x=numb;isdigit(ch=getchar());x=x*10+numb);(fl==true)&&(x=-x);
}
namespace Miracle{
const int N=8*1e5+5;
const int mod=998244353;
const int G=3;
const int GI=332748118;
int n,m;
int qm(int x,int y){int ret=1;while(y){if(y&1) ret=(ll)ret*x%mod;x=(ll)x*x%mod;y>>=1;}return ret;
}
int f[N],t[N],e[N],b[N],p[N],ni[N],g[N],lg[N];
int rev[N];
void NTT(int *f,int n,int c){for(reg i=0;i<n;++i){if(i<rev[i]) swap(f[i],f[rev[i]]);}for(reg p=2;p<=n;p<<=1){int gen;if(c==1) gen=qm(G,(mod-1)/p);else gen=qm(GI,(mod-1)/p);for(reg l=0;l<n;l+=p){int buf=1;for(reg k=l;k<l+p/2;++k){int tmp=(ll)buf*f[k+p/2]%mod;f[k+p/2]=(f[k]-tmp+mod)%mod;f[k]=(f[k]+tmp)%mod;buf=(ll)buf*gen%mod;}}}
}
void inv(int *f,int *g,int n){if(n==1){g[0]=qm(f[0],mod-2);return;}inv(f,g,n>>1);for(reg i=0;i<n;++i) p[i]=f[i];for(reg i=n;i<2*n;++i) p[i]=0;for(reg i=0;i<2*n;++i){rev[i]=rev[i>>1]>>1|((i&1)?n:0);}NTT(g,2*n,1);NTT(p,2*n,1);for(reg i=0;i<2*n;++i){g[i]=((ll)2-(ll)g[i]*p[i]%mod+mod)%mod*g[i]%mod;}NTT(g,2*n,-1);int iv=qm(2*n,mod-2);for(reg i=0;i<2*n;++i){if(i<n) g[i]=(ll)g[i]*iv%mod;else g[i]=0;}
}
void dao(int *f,int n){for(reg i=0;i<n-1;++i){f[i]=(ll)f[i+1]*(i+1)%mod;}f[n-1]=0;
}
void ji(int *f,int n){for(reg i=n-1;i>=1;--i){f[i]=(ll)f[i-1]*qm(i,mod-2)%mod;}f[0]=0;
}
void ln(int *f,int *g,int n){for(reg i=0;i<n;++i) ni[i]=0;for(reg i=n;i<2*n;++i) ni[i]=0,b[i]=0;inv(f,ni,n);for(reg i=0;i<n;++i) b[i]=f[i];dao(b,n);for(reg i=0;i<2*n;++i){rev[i]=rev[i>>1]>>1|((i&1)?n:0);}NTT(b,2*n,1);NTT(ni,2*n,1);for(reg i=0;i<2*n;++i){g[i]=(ll)b[i]*ni[i]%mod;}NTT(g,2*n,-1);int iv=qm(2*n,mod-2);for(reg i=0;i<2*n;++i){if(i<n) g[i]=(ll)g[i]*iv%mod;else g[i]=0;}ji(g,n);
}
void exp(int *f,int *g,int n){if(n==1){g[0]=1;return;}exp(f,g,n>>1);for(reg i=0;i<n;++i) lg[i]=0;ln(g,lg,n);
//    cout<<" Exp "<<n<<endl;
//    for(reg i=0;i<n;++i){
//        printf("%d ",lg[i]);
//    }puts("");
//    cout<<" now "<<endl;
//    for(reg i=0;i<n;++i){
//        cout<<g[i]<<" ";
//    }cout<<endl;
    lg[0]=(1+f[0]-lg[0]+mod)%mod;for(reg i=1;i<n;++i) lg[i]=(f[i]-lg[i]+mod)%mod;
//    cout<<" glglg "<<endl;
//    for(reg i=0;i<n;++i){
//        cout<<lg[i]<<" ";
//    }cout<<endl;
//    for(reg i=0;i<n;++i) p[i]=f[i];
//    for(reg i=n;i<2*n;++i) p[i]=0;
//    NTT(p,2*n,1);for(reg i=0;i<2*n;++i){rev[i]=rev[i>>1]>>1|((i&1)?n:0);}NTT(lg,2*n,1);NTT(g,2*n,1);
//    for(reg i=0;i<2*n;++i){
//        g[i]=(ll)(1-lg[i]+p[i]+mod)%mod*g[i]%mod;
//    }for(reg i=0;i<2*n;++i){g[i]=(ll)lg[i]*g[i]%mod;}NTT(g,2*n,-1);int iv=qm(2*n,mod-2);for(reg i=0;i<2*n;++i){if(i<n) g[i]=(ll)g[i]*iv%mod;else g[i]=0;}
}
int main(){rd(n);for(reg i=0;i<n;++i) rd(f[i]);int len,lp;for(lp=n,len=1;len<=lp;len<<=1);
//    cout<<" start len "<<len<<endl;
    exp(f,g,len);for(reg i=0;i<n;++i){printf("%d ",g[i]);}return 0;
}}
signed main(){Miracle::main();return 0;
}/*Author: *Miracle*Date: 2019/2/1 16:01:41
*/

转载于:https://www.cnblogs.com/Miracevin/p/10347176.html

[学习笔记]多项式指数函数相关推荐

  1. [学习笔记]多项式与有标号简单图计数

    学了一天的有标号无向图计数真的自闭了- 本篇文章是基于2019WC汪乐平大佬的讲课课件<生成函数,多项式算法与图的计数>编写的. 注意:文中所有生成函数都规定为指数型生成函数(EGF),请 ...

  2. 机器学习学习笔记-多项式中的过拟合,泛化能力等

    引用于 机器学习中模型泛化能力和过拟合现象(overfitting)的矛盾.以及其主要缓解方法正则化技术原理初探 - 郑瀚Andrew.Hann - 博客园 (cnblogs.com) 说在前面的一点 ...

  3. [学习笔记]多项式开根

    还是倍增思想 每一层 还要套一个多项式求逆 所以O(nlog^2n),常数也不小 数组比较多 再trick一下 得到: $T=(T'+F*inv(T'))*inv2$ 可以只算一次多项式求逆,一次NT ...

  4. [多项式算法](Part 4)FWT 快速沃尔什变换 学习笔记

    其他多项式算法传送门: [多项式算法](Part 1)FFT 快速傅里叶变换 学习笔记 [多项式算法](Part 2)NTT 快速数论变换 学习笔记 [多项式算法](Part 3)MTT 任意模数FF ...

  5. 【学习笔记】多项式相关算法

    [学习笔记]多项式相关算法 手动博客搬家: 本文发表于20181125 13:19:28, 原地址https://blog.csdn.net/suncongbo/article/details/844 ...

  6. 多项式相关操作学习笔记

    多项式相关操作学习笔记 标签: 多项式 说在前边 记录一下相关的多项式操作,顺便存个模板.(多点求值之后的部分,有点写不动了...留坑留坑 多项式 定义 给定一个环\(R\)(\(R\)通常是交换环, ...

  7. 「学习笔记」多项式的蛇皮操作

    文章目录 「学习笔记」多项式的蛇皮操作 前置知识 趋近 自然常数 对数 逆元 导函数 牛顿迭代与泰勒公式 不定积分与定积分 多项式乘法 多项式求逆元 多项式除法/取模 多项式牛顿迭代法 多项式开根 「 ...

  8. 【学习笔记】超简单的多项式求指(含泰勒展开式、牛顿迭代完成证明)

    整理的算法模板合集: ACM模板 目录 多项式求指 泰勒展开式 牛顿迭代 牛顿迭代应用 P4726 [模板]多项式指数函数(多项式 exp) 数组版 (1.64s) vector版 (960 ms) ...

  9. 【学习笔记】之多项式使人头秃

    真的自闭= = 多项式是什么鬼哦 首先 介绍 FFT 我才不想写那么多柿子呢 大体说一下FFT干了啥 我们对两个多项式进行卷积(即多项式乘法)  也就是  暴力计算的话是n^2的 我们考虑把它变成点值 ...

最新文章

  1. form表单提交,Servlet接收并读取Excel文件
  2. Spring MVC 3 深入总结
  3. 为敏感信息设置安全屏障
  4. vxWorks多任务编程初探-上
  5. HDOJ 1896 Stones 解题报告
  6. [New Portal]Windows Azure Web Site (4) Web Site Gallery
  7. java Linux icepdf,ICEpdf 6.1.1发布,Java的PDF类库
  8. oracle手机怎么样,ORACLE环境存储哪家强?
  9. Mendeley文献管理软件
  10. extjs combobox分页加载数据不显示
  11. 201509-2-日期计算
  12. 一、 kettle开发、上线常见问题以及防错规范步骤
  13. 最新可使用在线音乐网站+多解析源码
  14. MFC中调用WPF教程
  15. 爬虫实战——爬取大麦网
  16. 调用登录接口返回“参数错误”
  17. java 测试网络_java Ping操作(测试网络)
  18. 编程c语言counter,c语言中计算平均分时,计数器(counter)的初始化
  19. 7-1 复数类的操作
  20. html + layui 打开word文档

热门文章

  1. Java学习笔记2021.1.9
  2. [Sensor]--BMI160-加速度计、陀螺仪传感器
  3. string常用操作
  4. java 远程shell脚本_java通过ssh连接服务器执行shell命令详解及实例
  5. mysql事务所_MySQL事务,这篇文章就够了
  6. kafka消费端慢慢延迟(网络带宽不足)
  7. 顶层const和底层const的区别
  8. php批量打印快递单,excel怎么利用vba实现批量套打快递单批量打印单据?
  9. SQL数据库对象的删除
  10. Lua——基本语法知识,从hello word开始