当前位置: 首页 > news >正文

常系数齐次线性递推

问题

\(\displaystyle a_n=\sum_{i=1}^{k}f_i\times a_{n-i}\),已知 \(a_{0\sim k-1},f_{1\sim k}\),求 \(a_n\)

子问题

求解 \([x^k]\dfrac{P(x)}{Q(x)}\),其中 \(P,Q\) 均不超过 \(n\) 次,\(k\) 比较巨大。

化为 \([x^k]\dfrac{P(x)Q(-x)}{Q(x)Q(-x)}\)

显然可以发现分母的奇数项系数都是 \(0\) 了。

分讨 \(k\) 的奇偶性,如果 \(k\) 是奇数,就得到 \(\dfrac{xF(x^2)}{G(x^2)}\);否则得到 \(\dfrac{F(x^2)}{G(x^2)}\)。这里 \(F\)\(G\) 只需要使用两次多项式乘法和一些简单转换就能算出来。

然后现在问题就变成了计算 \([x^{k/2}]\dfrac{F(x)}{G(x)}\),一直递归下去直到要求 \([x^0]\dfrac{F(x)}{G(x)}\) 即可,时间复杂度 \(O(n\log n\log k)\)

原问题

现在我们只需要构造出来 \(P,Q\) 就好了。

一种构造是令 \(Q(x)=1-f_1x-f_2x^2-\cdots-f_kx^k\),此时 \(\displaystyle[x^n]P(x)=a_n-\sum_{i=1}^{k}f_ia_{n-i}\),不难发现其在 \(n\ge k\) 时为 \(0\)

那么直接代入 \(P,Q,n\) 当作上面子问题的参数去解决即可。

代码

点击查看代码
#include<bits/stdc++.h>
#define int long long
// #define ll __int128
// #define ull unsigned int
#define N 300005
#define M 200005
#define K 20
// #define B 13331
#define mod 998244353
#define pii pair<int,int>
#define x first
#define y second
#define pct __builtin_popcount
#define mpi make_pair
#define pi acos(-1)
#define inf 2e18
#define poly vector<int>
using namespace std;
int Tc=1,n,k,rev[N],g=3,gg=332748118;
int ksm(int x,int y){int res=1;while(y){if(y&1)(res*=x)%=mod;(x*=x)%=mod;y>>=1;}return res;
}
void ntt(poly &a,int n,int t){for(int i=0;i<n;i++){if(i<rev[i]){swap(a[i],a[rev[i]]);}}for(int len=1;len<n;len<<=1){int w1=ksm((t==1?g:gg),(mod-1)/(len+len));for(int i=0;i<n;i+=len+len){int wk=1;for(int j=0;j<len;j++,wk=wk*w1%mod){int x=a[i+j],y=wk*a[i+j+len]%mod;a[i+j]=(x+y)%mod;a[i+j+len]=(x-y+mod)%mod;}}}if(t==-1){for(int i=0;i<n;i++){a[i]=a[i]*ksm(n,mod-2)%mod;}}
}
int init(int m){int n=1;while(n<m)n<<=1;for(int i=0;i<n;i++){rev[i]=(rev[i>>1]>>1);if(i&1)rev[i]|=(n>>1);}return n;
}
poly operator*(poly a,poly b){int n=a.size()+b.size()-1;int m=init(n);a.resize(m);b.resize(m);ntt(a,m,1);ntt(b,m,1);for(int i=0;i<m;i++){a[i]=a[i]*b[i]%mod;}ntt(a,m,-1);return a;
}
int bm(poly p,poly q,int n){while(n){poly qq=q;for(int i=1;i<q.size();i+=2){qq[i]=mod-q[i];}p=p*qq;q=q*qq;int i=(n&1);while(i<p.size()){p[i>>1]=p[i];i+=2;}p.resize(i>>1);i=0;while(i<q.size()){q[i>>1]=q[i];i+=2;}q.resize(i>>1);n>>=1;}if(!p.size())return 0;return p[0]*ksm(q[0],mod-2)%mod;
}
int f[N],a[N];
void solve(int cs){if(!cs)return;cin>>n>>k;for(int i=1;i<=k;i++){cin>>f[i];f[i]=(f[i]%mod+mod)%mod;}for(int i=0;i<k;i++){cin>>a[i];a[i]=(a[i]%mod+mod)%mod;}poly p,q,r;q.resize(k+1);q[0]=1;for(int i=1;i<=k;i++){q[i]=mod-f[i];}r.resize(k);for(int i=0;i<k;i++){r[i]=a[i];}p=q*r;p.resize(k);cout<<bm(p,q,n)<<'\n';
}
signed main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);// cin>>Tc;// init();for(int cs=1;cs<=Tc;cs++){solve(cs);}// cerr<<clock()*1.0/CLOCKS_PER_SEC<<'\n';// cerr<<(&st-&ed)/1048576.0<<'\n';return 0;
}
http://www.jsqmd.com/news/915217/

相关文章:

  • 2026最新无锡市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 2026最新随州市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • AI时代程序员如何进化:从代码实现者到系统架构与业务定义者
  • 2026最新南阳市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 机器人技术全景解析:从3D传感、强化学习到产业应用与伦理挑战
  • 2026年嘉兴市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • MySQL MVCC 核心原理:版本链、ReadView 与可见性判断
  • 综合算法 II | 分治与贪心
  • 2026年武汉旧房翻新深度调研:覆盖6区480户业主回访与权威评测 - 优家闲谈
  • 如何解决空洞骑士Mod安装后游戏崩溃的完整指南
  • 2026最新内江市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 2026最新遂宁市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 2026最新芜湖市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 5步掌握MiMo-VL-7B推理:从安装到实战的完整指南
  • LeetCode210.课程表II
  • 2026年嘉峪关市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • 告别Android设备连接烦恼:UniversalAdbDriver终极解决方案
  • 2026最新宁波市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • UE5蓝图实战:用样条线+Spline组件打造可交互的3D空间测距工具(附完整项目文件)
  • 2026最新吴忠市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 2026最新台州市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 神经渲染新纪元:扩散模型原理、应用与未来展望
  • STVP烧录STM8时,那个让人头疼的‘Option Byte’页面到底该怎么用?
  • Go Web项目实战:接收上传的Excel文件,处理后再下载(附完整代码)
  • 2026年江门市本地黄金回收白银回收铂金回收靠谱门店权威榜第一名:足金首饰+投资金条+银条+旧料黄金上门变现无套路收费+门店地址及联系方式推荐 - 前途无量YY
  • 保姆级教程:用Arduino IDE 2 + STM32Duino搞定STM32开发环境(含ST-Link驱动、CubeProgrammer配置全流程)
  • 2026最新太原市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • STM 32 TIM定时器(1)
  • Claude 4.7 Opus 新手极速上手指南
  • 装修全屋定制高频问答:新手一站式答疑解惑