题面

传送门

题解

这种颓柿子的题我可能死活做不出来……

首先\(r=0\)……算了不说了,\(r=1\)就是个裸的自然数幂次和直接爱怎么搞怎么搞了,所以以下都假设\(r>1\)

\[s_p=\sum_{i=1}^n i^pr^i\]

我们要求的就是\(s_k\)

因为有

\[s_k=\sum_{i=1}^n i^kr^i\]

\[rs_k=\sum_{i=2}^{n+1}r^{i}(i-1)^k\]

两个柿子减一减

\[(r-1)s_k=r^{n+1}n^k-r+\sum_{i=2}^nr^i\left((i-1)^k-i^k\right)\]

然后来考虑后面这个东西

\[ \begin{aligned} \sum_{i=2}^nr^i\left((i-1)^k-i^k\right) &=\sum_{i=2}^nr^i\left(\sum_{j=0}^k{k\choose j}i^j(-1)^{k-j}-i^k\right)\\ &=\sum_{i=2}^nr^i\sum_{j=0}^{k-1}{k\choose j}i^j(-1)^{k-j}\\ &=\sum_{j=0}^{k-1}{k\choose j}(-1)^{k-j}\sum_{i=2}^nr^ii^j\\ &=\sum_{j=0}^{k-1}{k\choose j}(-1)^{k-j}\left(s(j)-r\right)\\ \end{aligned} \]

那么就可以\(O(k^2)\)递推了

//minamoto
#include<bits/stdc++.h>
#define R register
#define ll long long
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
using namespace std;
const int N=2005,P=1e9+7;
inline int add(R int x,R int y){return x+y>=P?x+y-P:x+y;}
inline int dec(R int x,R int y){return x-y<0?x-y+P:x-y;}
inline int mul(R int x,R int y){return 1ll*x*y-1ll*x*y/P*P;}
int ksm(R int x,R ll y){R int res=1;for(;y;y>>=1,x=mul(x,x))if(y&1)res=mul(res,x);return res;
}
int fac[N],ifac[N],inv[N],Pre[N],suf[N],f[N],s[N];
ll n,r;int k,m;
inline int C(R int n,R int m){return 1ll*fac[n]*ifac[m]%P*ifac[n-m]%P;}
void init(int n=N-1){inv[0]=inv[1]=ifac[0]=ifac[1]=fac[0]=fac[1]=1;fp(i,2,n){fac[i]=mul(fac[i-1],i),inv[i]=mul(P-P/i,inv[P%i]),ifac[i]=mul(ifac[i-1],inv[i]);}
}
int Lagrange(){n%=P;fp(i,1,k+2)f[i]=add(f[i-1],ksm(i,k));if(n<=k+2)return f[n];m=k+2;Pre[0]=1;fp(i,1,m)Pre[i]=mul(Pre[i-1],n-i);suf[m+1]=1;fd(i,m,1)suf[i]=mul(suf[i+1],n-i);int res=0,ty=(m-1)&1?P-1:1;fp(i,1,m)res=add(res,1ll*f[i]*ty%P*Pre[i-1]%P*suf[i+1]%P*ifac[m-i]%P*ifac[i-1]%P),ty=P-ty;return res;
}
int calc(){if(!r)return 0;R int p=ksm(r,n+1),q=1,invr=ksm(r-1,P-2),ty;s[0]=mul(dec(p,r),invr),n%=P;fp(i,1,k){q=mul(q,n),s[i]=dec(mul(p,q),r),ty=(i&1)?P-1:1;fp(j,0,i-1)s[i]=add(s[i],1ll*C(i,j)*ty%P*dec(s[j],r)%P),ty=P-ty;s[i]=mul(s[i],invr);}return s[k];
}
int main(){
//  freopen("testdata.in","r",stdin);init();int T;scanf("%lld",&T);while(T--){scanf("%lld%d%lld\n",&n,&k,&r),r%=P;printf("%d\n",r==1?Lagrange():calc());}return 0;
}

转载于:https://www.cnblogs.com/bztMinamoto/p/10535423.html

[51nod]1229 序列求和 V2(数学+拉格朗日差值)相关推荐

  1. P4593-[TJOI2018]教科书般的亵渎【拉格朗日差值】

    正题 题目链接:https://www.luogu.com.cn/problem/P4593 题目大意 场上有若干只怪,最高的为nnn,每个怪血量不同,有mmm个血量不存在. 不停释放亵渎(全场打一, ...

  2. P5437-[XR-2]约定【拉格朗日差值,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/P5437 题目大意 nnn个点的完全图,连接i,ji,ji,j的边权值为(i+j)k(i+j)^k(i+j)k.随机 ...

  3. 51Nod 1228 序列求和

    T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k,求S(n). 例如k = 2,n = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^2 ...

  4. 51nod 1258 序列求和 V4

    跪烂(貌似我记得,是我要学习多项式的一些东西,然后发现可以搞伯努利数,然后就奇怪的入坑了) 这个题显然是不可以n^2来预处理伯努利数的 那怎么办呢........找题解啊... 这里有伯努利数的生成函 ...

  5. 拉格朗日差值法----算法学习

    一.定义: 对某个多项式函数,已知有给定的k + 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值. 假设任意两个不同的xj都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多 ...

  6. 拉格朗日差值法python实现

    Lagrange插值法:Lagrange插值法:Lagrange插值法:给定一组点(x1,y1),(x2,y2)...(xn,yn)给定一组点 (x_{1},y_{1}),(x_{2},y_{2}). ...

  7. 拉格朗日差值 - 杜教板子

    牛客网暑期ACM多校训练营(第一场) F Sum of Maximum 杜教板子: 证明https://blog.csdn.net/Lee_w_j__/article/details/81135539 ...

  8. 51nod1228 序列求和(伯努利数)

    题面 传送门 题解 \(O(n^2)\)预处理伯努利数 不知道伯努利数是什么的可以看看这篇文章 不过这个数据范围拉格朗日差值应该也没问题--吧--大概-- //minamoto #include< ...

  9. 51nod1229-序列求和V2【数学,拉格朗日插值】

    正题 题目链接:http://www.51nod.com/Challenge/Problem.html#problemId=1229 题目大意 给出n,k,rn,k,rn,k,r求 ∑i=1nikri ...

最新文章

  1. 在NewLisp中实现匿名函数的递归
  2. 问题集锦(43-45)
  3. 小机箱的评估,立人 vs Jobs机箱
  4. SQL 2005单用户启动实例
  5. Python之Requests
  6. BUUCTF(pwn)mrctf2020_easy_equation
  7. 自建K8S迁移镜像、应用至阿里云ACK最佳实践
  8. C#黔驴技巧之实现统计结果排名
  9. AWS SQS和Spring JMS集成
  10. 模糊逻辑系统_在模糊逻辑系统中工作 人工智能
  11. 5 Tips for creating good code every day; or how to become a good software developer
  12. JQuery中如何动态修改input的type属性
  13. ubuntu 16.04安装并启动openssh
  14. UVa 10003 Cutting Sticks(区间DP)
  15. Python模块的导入方法1
  16. 帧数达不到144用144hz_专业FPS玩家讲解:60Hz与144Hz刷新率的问题
  17. 目标检测算法资源总结
  18. 爬虫爬取视频指定秒的画面
  19. windows驱动签名
  20. html如何与css样式表链接起来

热门文章

  1. Leaflet中添加标记、折线、圆圈、多边形、弹窗显示点击处坐标
  2. Windows上编译github源码方式运行Node-RED,以及离线迁移安装Node-RED
  3. SpringBoot整合spring-ws开发webservice接口(全流程详细教程)
  4. Linux网络:网络传输基本流程与协议初识
  5. bootstrap表格某一列值相同时_Bootstrap-table实现动态合并相同行(表格同名合并)
  6. bartlett方差齐性检验_基于R实现统计中的检验方法方差分析
  7. 心动警告!你有一份礼包待领取→
  8. 数据之“星”汇聚,第三届「星斗奖」申报正式启动!
  9. 视频 + PPT 下载 | 《财富管理数字化转型现状与趋势洞察报告》解读第一讲
  10. $AppStart、$AppEnd 全埋点解析