JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
来源:互联网 发布:jdk 7 windows i586 编辑:程序博客网 时间:2024/05/21 03:55
题目
题解
①我们可以知道当
②我们亦可以知道当
由①,②得,当
问题转换为
新知识:拉格朗日插值法求自然数幂和。
这东西干嘛用?
假设有一个平面直角坐标系,那么有k+1个点
用这k+1个点就可以确定一个k次的多项式。
设
接下来说明
首先
我们只要证明当
我们可以知道当
(我们可以将x带进l_i(x)中,若
在这道题目中,
因为只有
所以等式的左边
得证。
证明的大致思路:确定对
别忘记L=1时要特判。
代码
#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#define LL long long#define N 1000010#define mo 998244353#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;LL i,L,R,x,k,sum1,sum2,sum;LL n0,n1,n2;LL jc[N],ny[N];LL f[N]; LL ksm(LL x,LL y){ LL res=1; for(;y;x=(x*x)%mo,y/=2)if(y&1)res=(res*x)%mo; return res; }void get(){ LL i,temp; jc[0]=jc[1]=ny[0]=ny[1]=1; fo(i,2,1000002)jc[i]=(jc[i-1]*i)%mo; fo(i,2,1000002)ny[i]=ksm(jc[i],mo-2); temp=0; fo(i,1,1000002){ temp=(temp+ksm(i,k))%mo; f[i]=temp; }}LL getsum(LL n){ if(n<=k+2)return f[n]; LL i,temp,temp1,inv,inv1,inv2,n0,n1,n2,sum3=0; n0=1; fo(i,1,k+2)n0=(n0*(n-i))%mo; fo(i,1,k+2){ temp=(n0*f[i])%mo; inv1=((jc[i-1]*(n-i))%mo*jc[k-i+2])%mo; inv1=ksm(inv1,mo-2); temp1=(temp*inv1)%mo; if((k+2-i)&1)sum3=(sum3-temp1+mo)%mo; else sum3=(sum3+temp1)%mo; } return sum3;}int main(){ freopen("count.in","r",stdin); freopen("count.out","w",stdout); scanf("%lld%lld%lld",&L,&R,&k); get(); sum1=getsum(R); sum2=getsum(L-1); sum=(sum1-sum2+mo)%mo; if(L==1)sum=(sum+ksm(2,k)-1+mo)%mo; printf("%lld",sum); return 0;}
阅读全文
2 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】列车调度
- leetcode621. Task Scheduler
- STM32-串口IAP升级
- U3D编辑器拓展
- matlab入门
- c++里的const
- JZOJ 5395. 【NOIP2017提高A组模拟10.6】Count
- Java 动态代理的理解与Cglib动态代理实现
- 顺序表应用2:多余元素删除之建表算法
- Java程序员从笨鸟到菜鸟之(一)流程控制
- 【JZOJ5397】Biology
- 如何在Linux关闭前向其他系统用户发送自定义消息
- 并查集0.3
- LeetCode 500. Keyboard Row
- django 开发 (1)