分析:

懒得去卡常。。。
一个比较有效的卡常方式是:维护最高系数非零项,每次做乘法&取模的时候,以那一项为多项式长度。
坑先留着。。以后来补

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#define SF scanf
#define PF printf
#define MOD 104857601
#define MAXN 200010
using namespace std;
typedef long long ll;
int a[MAXN];
ll m,f[MAXN],g[MAXN],t[MAXN],rs[MAXN];
const int G=3;
ll fsp(ll x,int y){ll res=1;while(y){if(y&1)res=res*x%MOD;x=x*x%MOD;y>>=1;}return res;
}
void NTT(ll A[],int N,int flag){for(int i=1,j=0;i<N;i++){for(int d=N;j^=d>>=1,~j&d;);if(i<j)swap(A[i],A[j]); }for(int i=1;i<N;i<<=1){ll wn=fsp(G,(MOD-1)/(i<<1));if(flag)wn=fsp(wn,MOD-2);for(int j=0;j<N;j+=(i<<1)){ll w=1;for(int k=0;k<i;k++,w=w*wn%MOD){ll x=A[j+k],y=A[i+j+k]*w%MOD;A[j+k]=(x+y)%MOD;A[i+j+k]=(x-y+MOD)%MOD; }}}if(flag){ll invN=fsp(N,MOD-2);for(int i=0;i<N;i++)A[i]=A[i]*invN%MOD;    }
}
void inv(ll A[],ll B[],int N){if(N==1){B[0]=fsp(A[0],MOD-2);return ;}inv(A,B,(N+1)>>1);static ll tmp1[MAXN];for(int i=0;i<N;i++)tmp1[i]=A[i];int p=1;while(p<=N*2)p<<=1;NTT(tmp1,p,0);NTT(B,p,0);for(int i=0;i<p;i++)B[i]=B[i]*(2ll-tmp1[i]*B[i]%MOD+MOD)%MOD;NTT(B,p,1);for(int i=N;i<p;i++)B[i]=0;for(int i=0;i<p;i++)tmp1[i]=0;
}
void mul(ll A[],ll B[],int N,int M,ll res[]){static ll tmp1[MAXN],tmp2[MAXN];for(int i=0;i<N;i++)tmp1[i]=A[i];for(int i=0;i<M;i++)tmp2[i]=B[i];int p=1;while(p<=N+M)p<<=1;NTT(tmp1,p,0);NTT(tmp2,p,0);for(int i=0;i<p;i++)res[i]=tmp1[i]*tmp2[i]%MOD;NTT(res,p,1);for(int i=0;i<p;i++)tmp1[i]=tmp2[i]=0;
}
//void PolyMod(ll A[],ll B[],int N,int M){//  static ll tmp1[MAXN],tmp2[MAXN],tmp3[MAXN];
//  for(int i=0;i<N;i++)
//      tmp1[i]=A[N-i-1];
//  for(int i=0;i<M;i++)
//      tmp2[i]=B[M-i-1];
//  inv(tmp2,tmp3,M);
//  mul(tmp1,tmp3,N,N-M+1,tmp3);
//  reverse(tmp3,tmp3+N-M+1);
//  mul(tmp2,tmp3,M,N-M+1,tmp1);
//  for(int i=0;i<M-1;i++)
//      A[i]=(A[i]-tmp1[i]+MOD)%MOD;
//  for(int i=0;i<4*(N+1);i++)
//      tmp1[i]=tmp2[i]=tmp3[i]=0;
//}
void PolyMod(ll A[],ll B[],int N,int M){static ll ta[MAXN],tb[MAXN],tmp[MAXN];for(int i=0;i<N;i++) ta[i]=A[N-i-1];for(int i=0;i<M;i++) tb[i]=B[M-i-1];inv(tb,tmp,M);for(int i=0;i<N-M+1;i++) tb[i]=tmp[i];for(int i=0;i<4*M;i++) tmp[i]=0;mul(ta,tb,N,N-M+1,tmp);reverse(tmp,tmp+N-M+1);mul(B,tmp,M,N-M+1,tmp);for(int i=0;i<M-1;i++)A[i]=(A[i]-tmp[i]+MOD)%MOD;for(int i=0;i<4*(N+1);i++)tmp[i]=0;
}
void mul(ll A[],ll B[],ll Mod[],ll res[]){int N=23333;mul(A,B,N,N,res);PolyMod(res,Mod,2*N,N+1);
}
int main(){int n,A,B;int N=23333;SF("%d%lld",&n,&m);SF("%d%d%d",&a[1],&A,&B);for(int i=2;i<=n;i++)a[i]=(a[i-1]*A+B)%N+1;for(int i=1;i<=n;i++)g[a[i]]=(g[a[i]]+MOD-1)%MOD;g[0]++;
//  for(int i=1;i<=n;i++)
//      PF("%lld ",a[i]);
//  PF("\n");inv(g,t,N);memset(g,0,sizeof g);for(int i=1;i<=n;i++)f[N-a[i]]=(f[N-a[i]]+MOD-1)%MOD;f[N]++;rs[0]=1;g[1]=1;while(m){if(m&1ll)mul(rs,g,f,rs);mul(g,g,f,g);m>>=1ll;}ll ans=0;for(int i=0;i<N;i++)ans=(ans+t[i]*rs[i]%MOD)%MOD;PF("%lld",ans);
}

【常系数线性递推】51nod1538 一道难题相关推荐

  1. 常系数线性递推的第n项及前n项和(转载)

    (一)Fibonacci数列f[n]=f[n-1]+f[n-2],f[1]=f[2]=1的第n项的快速求法(不考虑高精度). 解法: 考虑1×2的矩阵[f[n-2],f[n-1]].根据fibonac ...

  2. 【组合数学】递推方程 ( 常系数线性齐次递推方程 | 常系数、线性、齐次 概念说明 | 常系数线性齐次递推方程公式解法 | 特征根 | 通解 | 特解 )

    文章目录 一.常系数线性齐次递推方程 二.常系数.线性.齐次 概念说明 三.常系数线性齐次递推方程公式解法 四.常系数线性齐次递推方程公式解法内容概要 一.常系数线性齐次递推方程 常系数线性齐次递推方 ...

  3. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )

    文章目录 一.递推方程 内容概要 二.递推方程 定义 三.递推方程 示例 四.斐波那契数列 ( Fibnacci ) 一.递推方程 内容概要 递推方程 内容概要 : 递推方程定义 递推方程实例 常系数 ...

  4. Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...

    Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...

  5. Codeforces 1106F Lunar New Year and a Recursive Sequence (线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...

    哎呀大水题..我写了一个多小时..好没救啊.. 数论板子X合一? 注意: 本文中变量名称区分大小写. 题意: 给一个\(n\)阶递推序列\(f_k=\prod^{n}_{i=1} f_{k-i}^{b ...

  6. HDU2045 不容易系列之(3)—— LELE的RPG难题(递推)

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission ...

  7. 关于欧拉工程的一道递推题

    今天来讲的是在欧拉工程上的一道递推题,题目描述如下链接. 题目:https://projecteuler.net/problem=492 当然,这道题在51Nod上有一个比较通用的版本,链接如下 题目 ...

  8. bzoj#4161-Shlw loves matrixI【常系数线性齐次递推】

    正题 题目链接:https://darkbzoj.tk/problem/4161 题目大意 给出序列aaa,和hhh的0∼k−10\sim k-10∼k−1项,满足 hn=∑i=1naihn−ih_n ...

  9. 刷题向》关于一道比较优秀的递推型DP(openjudge9275)(EASY+)

    先甩出传送门:http://noi.openjudge.cn/ch0206/9275/ 这道题比较经典, 最好不要看题解!!!!! 当然,如果你执意要看我也没有办法 首先,显然的我们可以用 f [ i ...

  10. hdu 1297 递推难题

    这题的话,我能玩一年 今天做了很多递推的题,这题无疑是最复杂的 其实可以看出来,2,3,4,5为一类,不妨定义为2型,1,6为一类,定义为1型 规定num[i]为结尾是i的凹槽的数量 我们可以能轻易的 ...

最新文章

  1. 什么是shell,shell基础由浅入深,常用的shell命令、用法、技巧
  2. 全国大学生智能汽车竞赛讯飞 -智慧餐厅技术报告 ——信号与系统课程论文
  3. 在网站SEO优化为何要加入网站地图?
  4. 电子商务思维导图精品荟萃:电子商务思维导图大全[多图精品收藏]
  5. html多个盒子重叠浮动,如何让浮动后的多个盒子水平居中
  6. 学计算机的管理医生,计算机科学与技术系医学生管理工作体会.pdf
  7. VFP下利用API调用帮助
  8. 如何在金山毒霸软件里安装腾讯视频
  9. sh 脚本 访问 路径 权限不够_IC设计之脚本语言介绍
  10. 单机 搭建kafka集群 本地_单机简单搭建一个kafka集群(没有进行内核参数和JVM的调优)...
  11. PaddleNLP Taskflow
  12. 微信打电话和直接打电话有什么区别吗?为什么?
  13. JAVA设计模式 — 生成器模式(Builder)
  14. Tensorflow Keras中的masking与padding的学习笔记
  15. 从play store下载apk
  16. asdoc:Stata 结果输出又一利器!
  17. 布赖恩·克尼根位计数算法说明及简单使用
  18. java fmal_fma、fmaf、fmal
  19. 时间字符串和Date之间的转换
  20. 平分七筐鱼c语言y,C语言平分7筐鱼代码及解析

热门文章

  1. (C语言代码分享):车辆信息管理系统源代码来了。
  2. 六足机器人的步态分析与实现——1
  3. 运用C语言指针知识实现对一个二维数组转置
  4. 使用tushare获取美股月收盘价
  5. RAP2 详细部署、操作指南
  6. strut2框架搭建
  7. 如何想领导说清楚DCMM到底有什么好处?
  8. 计算机考博面试题,交大系统博士笔试和面试题目
  9. html请假条源码,请假条(事假) 的例子
  10. IOS获取崩溃日志信息