博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P5245 【模板】多项式快速幂
阅读量:6627 次
发布时间:2019-06-25

本文共 1356 字,大约阅读时间需要 4 分钟。

思路

调了半天发现ln忘了清空数组了。。。

就是这个式子
\[ A^k(x) \equiv e^{k{\ln (A(x)) }} \]

代码

#include 
#include
#include
using namespace std;const int MAXN = 300000;const int G = 3;const int invG = 332748118;const int MOD = 998244353;int rev[MAXN],inv_val[MAXN];int pow(int a,int b){ int ans=1; while(b){ if(b&1) ans=(1LL*ans*a)%MOD; a=(1LL*a*a)%MOD; b>>=1; } return ans;}void cal_rev(int *rev,int n,int lim){ for(int i=0;i
>1]>>1)|((i&1)<<(lim-1));}void NTT(int *a,int opt,int n,int lim){ for(int i=0;i
>1,midlen,midlim); static int tmp[MAXN]; while((dep<<1)>midlen) midlen<<=1,midlim++; for(int i=0;i
=1;i--) a[i]=(1LL*a[i-1]*inv_val[i])%MOD; a[0]=0;}void ln(int *a,int *b,int &at){ static int tmp[MAXN]; int midlen=1,midlim=0,tmpt=at,bt=at; for(int i=0;i<=at;++i) tmp[i]=a[i]; inv(a,b,at+1,midlen,midlim); qd(tmp,tmpt); mul(b,tmp,at,tmpt); jf(b,tmpt); for(int i=0;i<=bt;i++) tmp[i]=0; for(int i=bt+1;i<=at;++i) tmp[i]=0,b[i]=0; at=bt;}void exp(int *a,int *b,int dep){ if(dep==1){ b[0]=1; return; } exp(a,b,(dep+1)>>1); static int tmp1[MAXN]; for(int i=0;i
'9') c=getchar(); while(c>='0'&&c<='9'){ k=(1LL*k*10%MOD+c-'0')%MOD; c=getchar(); } for(int i=0;i

转载于:https://www.cnblogs.com/dreagonm/p/10737729.html

你可能感兴趣的文章
linux笔记1-1
查看>>
dubbo源码分析-负载均衡
查看>>
一统江湖的大前端(3) DOClever——你的postman有点low
查看>>
云栖大会上发布了哪些移动研发新利器?
查看>>
《黑客免杀攻防》读书笔记-软件逆向工程(6) switch-case分支
查看>>
day6作业--游戏人生完善
查看>>
金字塔思维
查看>>
strak组件(10):批量操作
查看>>
thinkphp空控制器的处理
查看>>
Mahout分步式程序开发 聚类Kmeans(转)
查看>>
接口幂等
查看>>
LibreOffice 打开中文乱码
查看>>
FromBottomToTop第十三周项目博客
查看>>
【常用工具】常用工具收集
查看>>
Tax
查看>>
第二阶段团队冲刺站立会议06
查看>>
html
查看>>
本地wampserver如何配置伪静态
查看>>
C#串口通信实例
查看>>
小程序数据返回时刷新当前页面数据
查看>>