【JZOJ 5395】【NOIP2017提高A组模拟10.6】Count
来源:互联网 发布:淘宝自动装修软件 编辑:程序博客网 时间:2024/05/21 04:25
Descrption
Solution
也就是求出
这个Ans肯定可以表示成一个k+1的多项式,
——(以下为证明,大佬跳过)——-
设多项式
那么,
我们发现,只有当L为k+1的多项式时,才可以化简出一个
——(好辣鸡的证明啊~)——
那么用拉格朗日插值法即可直接做,预处理前k+2个数,在最后的式子你会发现其只是一堆连续的数求积,直接预处理即可,
复杂度:
Code
#include <cstdio>#define fo(i,a,b) for(int i=a;i<=b;i++)using namespace std;typedef long long LL;const int N=1000010,mo=998244353;int m,n,n1,M;bool prz[N];int pr[N/5];int Ans[N];LL ALLc,Pi[N];LL ksm(LL q,int w){ LL ans=1; for(;w;w>>=1,q=q*q%mo)if(w&1)ans=ans*q%mo; return ans;}LL LIP(int n){ if(n<1)return 0; if(n<=m)return Ans[n]; ALLc=1; fo(i,n-m,n-1)ALLc=ALLc*(LL)i%mo; LL ans=0; fo(i,1,m) { LL t1=Pi[i-1]*Pi[m-i]%mo*(LL)(n-i)%mo; if((m-i+2)&1)t1=-t1; ans=(ans+Ans[i]*ksm(t1,mo-2)%mo)%mo; } if(ans<0)ans+=mo; return ans*ALLc%mo;}int main(){ scanf("%d%d%d",&n,&n1,&m); M=m;m+=2; Ans[1]=Pi[0]=Pi[1]=1; fo(i,2,m) { if(!prz[i])pr[++pr[0]]=i,Ans[i]=ksm(i,M); fo(j,1,pr[0]) { int t=pr[j]*i; if(t>m||t<1)break; prz[t]=1; Ans[t]=Ans[i]*(LL)Ans[pr[j]]%mo; if(i%pr[j]==0)break; } Pi[i]=Pi[i-1]*(LL)i%mo; } fo(i,2,m+2)Ans[i]=(Ans[i]+Ans[i-1])%mo; printf("%lld\n",((n<2?(n=2,ksm(2,M)):0)+LIP(n1)-LIP(n-1)+mo)%mo); return 0;}
阅读全文
0 0
- 【JZOJ 5395】【NOIP2017提高A组模拟10.6】Count
- JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
- JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
- JZOJ 5397. 【NOIP2017提高A组模拟10.6】Biology
- JZOJ 5396. 【NOIP2017提高A组模拟10.6】Blocks
- 拉格朗日插值法 【NOIP2017提高A组模拟10.6】Count
- [JZOJ5395]【NOIP2017提高A组模拟10.6】Count
- 【JZOJ 4931】【NOIP2017提高组模拟12.24】A
- 【JZOJ 4931】【NOIP2017提高组模拟12.24】A
- JZOJ 5195. 【NOIP2017提高组模拟7.3】A
- JZOJ 100026. 【NOIP2017提高A组模拟7.7】图
- JZOJ 100030. 【NOIP2017提高A组模拟7.8】为了爱情
- jzoj. 100031. 【NOIP2017提高A组模拟7.9】外星密码
- JZOJ 100035【NOIP2017提高A组模拟7.10】区间
- JZOJ 100036 【NOIP2017提高A组模拟7.10】随机
- JZOJ 100037【NOIP2017提高A组模拟7.11】后缀数组
- JZOJ 100035. 【NOIP2017提高A组模拟7.10】区间
- JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度
- python3 学习之路2
- python 中的闭包
- Python笔记6
- 剑指offer之丑数
- Java 多线程(PART IX) synchronized(II) 对对象进行加锁
- 【JZOJ 5395】【NOIP2017提高A组模拟10.6】Count
- struts2的原理和工作机制
- thrift(1)------基于thrift通信组件的简单RPC服务
- 二维数组中的查找
- CentOS7的网络配置
- 课后习题page101.pp3.4
- 请详细说下你对vue生命周期的理解?
- Homebrew包管理器的安装与使用
- [高级软件工程实验]内部模块化的命令行菜单小程序V2.0