题目链接:https://codeforces.com/contest/622/problem/F

mark一个dls拉个朗日插值的板子

代码:

#include<bits/stdc++.h>
#define xx first
#define yy second
#define mp make_pair
#define pb push_back
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
// 注意mod,使用前须调用一次 polysum::init(int M);
// 对于k阶多项式,输入k+1个点
namespace polysum
{#define rep(i,a,n) for(int i=a;i<n;i++)#define per(i,a,n) for(int i=n-1;i>=a;i--)typedef long long ll;const ll mod=1e9+7;//取模值const int D=1010000;//最高次限制ll powmod(ll a,ll b){ll res=1;a%=mod;assert(b >= 0);for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;}ll a[D],f[D],g[D],p[D],p1[D],p2[D],b[D],h[D][2],C[D];ll calcn(int d,ll *a,ll n){if(n<=d) return a[n];p1[0]=p2[0]=1;rep(i,0,d+1){ll t=(n-i+mod)%mod;p1[i+1]=p1[i]*t%mod;}rep(i,0,d+1){ll t=(n-d+i+mod)%mod;p2[i+1]=p2[i]*t%mod;}ll ans=0;rep(i,0,d+1){ll t=g[i]*g[d-i]%mod*p1[i]%mod*p2[d-i]%mod*a[i]%mod;if((d-i)&1) ans=(ans-t+mod)%mod;else ans=(ans+t)%mod;}return ans;}void init(int M) {  //M:最高次f[0]=f[1]=g[0]=g[1]=1;rep(i,2,M+5) f[i]=f[i-1]*i%mod;g[M+4]=powmod(f[M+4],mod-2);per(i,1,M+4) g[i]=g[i+1]*(i+1)%mod;}ll polysum(ll n,ll *arr,ll m){  // a[0].. a[m] \sum_{i=0}^{n-1} a[i]for(int i=0;i<=m;i++)a[i]=arr[i];a[m+1]=calcn(m,a,m+1);rep(i,1,m+2) a[i]=(a[i-1]+a[i])%mod;return calcn(m+1,a,n-1);}ll qpolysum(ll R,ll n,ll *a,ll m) { // a[0].. a[m] \sum_{i=0}^{n-1} a[i]*R^i if(R==1) return polysum(n,a,m);a[m+1]=calcn(m,a,m+1);ll r=powmod(R,mod-2),p3=0,p4=0,c,ans;h[0][0]=0;h[0][1]=1;rep(i,1,m+2){h[i][0]=(h[i-1][0]+a[i-1])*r%mod;h[i][1]=h[i-1][1]*r%mod;}rep(i,0,m+2){ll t=g[i]*g[m+1-i]%mod;if(i&1) p3=((p3-h[i][0]*t)%mod+mod)%mod,p4=((p4-h[i][1]*t)%mod+mod)%mod;else p3=(p3+h[i][0]*t)%mod,p4=(p4+h[i][1]*t)%mod;}c=powmod(p4,mod-2)*(mod-p3)%mod;rep(i,0,m+2) h[i][0]=(h[i][0]+h[i][1]*c)%mod;rep(i,0,m+2) C[i]=h[i][0];ans=(calcn(m,C,n)*powmod(R,n)-c)%mod;if(ans<0) ans+=mod;return ans;}
}using namespace polysum;
ll num[D];
int main()
{//freopen("in.txt","r",stdin);//freopen("out.txt","w",stdout);int n,k;scanf("%d%d",&n,&k);init(k+1);for(int i=0;i<=k;i++)num[i]=powmod(i,k);cout<<polysum::polysum(n+1,num,k)-polysum::polysum(1,num,k)<<endl;return 0;
}

Educational Codeforces Round 7 F. The Sum of the k-th Powers(拉格朗日插值)相关推荐

  1. Educational Codeforces Round 14 - F (codeforces 691F)

    题目链接:http://codeforces.com/problemset/problem/691/F 题目大意:给定n个数,再给m个询问,每个询问给一个p,求n个数中有多少对数的乘积≥p 数据范围: ...

  2. Educational Codeforces Round 9 F. Magic Matrix 最小生成树

    F. Magic Matrix 题目连接: http://www.codeforces.com/contest/632/problem/F Description You're given a mat ...

  3. Educational Codeforces Round 50: F. Relatively Prime Powers(莫比乌斯函数)

    F. Relatively Prime Powers 题意: 给你一个n,问满足在[2,n]范围内有多少个数是非次方数(也就是不是这样的) 思路: 答案就是 原理是利用容斥,注意n开i次根是向下取整( ...

  4. Educational Codeforces Round 39 F Largest Beautiful Number

    传送门 暴力DP dp[i][j][k] 从j 到 k 发f(x) 的大小, #include <bits/stdc++.h> using namespace std; typedef l ...

  5. 双联通分量求简单环(Educational Codeforces Round 42: F. Simple Cycles Edges)

    题意: n个点m条边的无向图,问有哪些边在一个简单环上,按顺序输出这些边的编号 思路: 对于无向图求出每个双联通分量,对于每个双联通分量,如果点的个数==边的个数,那么这个双联通分量就是个简单环,输出 ...

  6. Educational Codeforces Round 53: E. Segment Sum(数位DP)

    题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 思路: 明显的数位DP了,套路都一样,不过这道题是记权值而不是满足条件的数字个数,所 ...

  7. Educational Codeforces Round 51: F. The Shortest Statement(最短路+LCA)

    F. The Shortest Statement 题意: n个点m条边(m≤n+20)的无向连通图,Q次询问,每次求出给定两点的最短路 思路: 将题意转换一下,给你一棵n个节点的树,并且这个树上还有 ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  9. Educational Codeforces Round 76 (Rated for Div. 2) F. Make Them Similar 折半搜索

    传送门 文章目录 题意: 思路: 题意: 思路: 一个显然的思路就是2302^{30}230枚举所有的xxx,让后再检查,这个复杂度显然不能接受. 又发现对于每个位置它取多少不受其他位置限制,满足可拼 ...

  10. Educational Codeforces Round 61 (Rated for Div. 2)(A、B、C、D、E、F)

    欢迎访问本菜鸡的独立博客:Codecho 比赛名称 Educational Codeforces Round 61 (Rated for Div. 2) 比赛链接 https://codeforces ...

最新文章

  1. 得到最后的自增长列的最后一个值
  2. [comparator] 策略模式
  3. pycharm变量存_20190909 pycharm快捷键与变量
  4. 使用Visual Studio 2013开发Python Django
  5. springboot 使用mybatis-plus 配置乐观锁
  6. 正则式转化nfa 代码_从0到1打造正则表达式执行引擎(二)
  7. error: x264_bit_depth undeclared (first use in this function) did you mean x264_picture_t
  8. SaltStack之数据系统
  9. python 拼音 四线格_拼音四线三格中的写法示意及书写注意事项
  10. LabVIEW 2021 工具包
  11. python代码求圆锥体积_计算圆锥体积的c++程序
  12. Java导出Excel每列求和,POI导出excel执行自动求和
  13. java随机数生成字母_java生成随机数字和字母组合
  14. 关于(C++)数据结构复数计算器作业的拓展
  15. 【官宣】.NET 6 正式版来了
  16. C++语言——求圆柱表面积
  17. Linux音频驱动之五:UDA1341芯片操作接口
  18. JAVA计算机毕业设计智能超市导购系统Mybatis+源码+数据库+lw文档+系统+调试部署
  19. 解决 soctherm: OC ALARM 0x00000001 错误
  20. 合成大西瓜开发源码,手把手教你运行和部署大西瓜游戏项目

热门文章

  1. 父母尚在苟且,你却在炫耀诗和远方
  2. nginx服务器配置
  3. 关于AS(Android studio)添加recyclerview控件后的进一步仿微信界面
  4. 黑客游戏(强烈推荐)攻防ctf
  5. Relatively Prime Graph(贪心+注意数据范围)
  6. 爱思唯尔(ELSEVIER)期刊LaTeX通用模板下载及使用技巧
  7. wavin flag by k'naan
  8. 按键精灵 - 安卓版 - 罗盘 - 八向方位模拟 - 自动寻路
  9. Java实验-宠物商店(链表与接口的使用)
  10. 计算机组成原理与体系结构——随机存储器和只读存储器