题面

传送门

题解

\(O(n^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;
char buf[1<<21],*p1=buf,*p2=buf;
inline char getc(){return p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++;}
ll read(){R ll res,f=1;R char ch;while((ch=getc())>'9'||ch<'0')(ch=='-')&&(f=-1);for(res=ch-'0';(ch=getc())>='0'&&ch<='9';res=res*10+ch-'0');return res*f;
}
char sr[1<<21],z[20];int K=-1,Z=0;
inline void Ot(){fwrite(sr,1,K+1,stdout),K=-1;}
void print(R int x){if(K>1<<20)Ot();if(x<0)sr[++K]='-',x=-x;while(z[++Z]=x%10+48,x/=10);while(sr[++K]=z[Z],--Z);sr[++K]='\n';
}
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 int 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],B[N];
inline int C(R int n,R int m){return m>n?0:1ll*fac[n]*ifac[m]%P*ifac[n-m]%P;}
ll n;int k,T,nw,q,res;
void init(int n){B[0]=fac[0]=fac[1]=ifac[0]=ifac[1]=inv[0]=inv[1]=1;fp(i,2,n){fac[i]=mul(fac[i-1],i),inv[i]=1ll*(P-P/i)*inv[P%i]%P,ifac[i]=mul(ifac[i-1],inv[i]);}fp(i,1,n){fp(j,0,i-1)B[i]=dec(B[i],mul(B[j],C(i+1,j)));B[i]=mul(B[i],inv[i+1]);}
}
int main(){
//  freopen("testdata.in","r",stdin);init(N-1);for(int T=read();T;--T){n=read(),k=read(),nw=q=(n+1)%P,res=0;for(R int i=k;~i;--i,nw=mul(nw,q))res=add(res,1ll*B[i]*C(k+1,i)%P*nw%P);res=mul(res,inv[k+1]);print(res);}return Ot(),0;
}

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

51nod1228 序列求和(伯努利数)相关推荐

  1. 1228 序列求和 (伯努利数)

    1228 序列求和 3 秒 131,072 KB 160 分 6 级题 T(n) = n^k,S(n) = T(1) + T(2) + - T(n).给出n和k,求S(n). 例如k = 2,n = ...

  2. 蓝桥杯:入门训练 序列求和

    蓝桥杯:入门训练 序列求和 问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值. 样例输入 4 样例输出 10 ...

  3. python 分数序列求和公式_Python分数序列求和,编程练习题实例二十四

    本文是关于Python分数序列求和的应用练习,适合菜鸟练习使用,python大牛绕行哦. Python练习题问题如下: 问题简述:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13 要 ...

  4. 蓝桥杯 入门训练 试题集汇总 【A+B问题、序列求和、圆的面积、Fibonacci数列】

    练习系统 目   录 BEGIN-1 A+B问题 BEGIN-2 序列求和 BEGIN-3 圆的面积 BEGIN-3 Fibonacci数列 BEGIN-1 A+B问题 资源限制 时间限制:1.0s ...

  5. 入门训练 序列求和 c语言

    入门训练 序列求和 问题描述 求1+2+3+-+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+-+n的值. 样例输入 4 样例输出 10 样例输入 100 ...

  6. 【算法设计与分析】08 序列求和的方法

    本篇文章学习数列求和的一些方法.这些方法对后面学习算法的时间复杂度非常有帮助. 文章目录 1. 数列求和公式 1.1 二分搜索的时间复杂度求解 2 估计和式上届的放大法 3 估计和式渐近的界 4 总结 ...

  7. 小学奥数_7829神奇序列求和 python

    http://noi.openjudge.cn/math/7829/ """小学奥数_7829神奇序列求和 http://noi.openjudge.cn/math/78 ...

  8. 蓝桥杯 入门训练 序列求和

    [蓝桥杯入门训练](BEGIN-2 序列求和) 问题描述 求1+2+3+-+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+-+n的值. 样例输入 4 样例 ...

  9. 蓝桥杯 BEGIN-2 入门训练 序列求和

    BEGIN-2 入门训练 序列求和  问题描述 求1+2+3+...+n的值. 输入格式 输入包括一个整数n. 输出格式 输出一行,包括一个整数,表示1+2+3+...+n的值. 样例输入 4 样例输 ...

最新文章

  1. RDKit | PD/PD-L1抑制活性 化合物指标分析
  2. chmod +x的意思就是给执行权限
  3. windchill开发之创建对象
  4. .Net微服务实战之可观测性
  5. %=%、%%、%@%、%#%的区别
  6. java文件学生_文件存储学生信息(JavaIO流)
  7. python爬取网易云歌词
  8. 简述RAID 0,1,5,10区别
  9. 百度之星 度度熊的午饭时光
  10. Axure 初学者如何做 App 产品原型?
  11. 简单的喜欢最长远 平凡中的陪伴最心安 懂你的人最温暖
  12. outlook企业邮箱服务器要多少钱,如何用OUTLOOK使用企业邮箱
  13. 漏洞管理平台-洞察贰
  14. c语言tab什么意思_C语言入门学好这一篇就足够了!C语言所有的知识点
  15. 2022年科技期刊最新影响因子在线查询
  16. Android 实现三种响铃模式的切换
  17. red had第二次学习整理
  18. 达摩达兰论估价pdf_《故事与估值:商业故事的价值》pdf文字版下载
  19. html图片从透明到显示,css 文字半透明显示在图片上
  20. php下拉选择联动,实现输入框与下拉框联动

热门文章

  1. repo file=sys.stderr 错误解决
  2. Android 10.0 PackageManagerService(二)权限扫描-[Android取经之路]
  3. 一步一步教你如何导出JAR包后将多个JAR包合并,并混淆
  4. ScrollView和ListView冲突解决
  5. 高一升学计算机,(有答案)2016年上学期高一年级对口升学第一次月考计算机应用试题资料讲解(9页)-原创力文档...
  6. (0010) iOS 开发之UI布局兼容 4s/5/6/7 屏幕解决方案
  7. 浏览器到响应页面的全过程
  8. 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
  9. git cmd 命令在已有的仓库重新添加新的文件夹
  10. 第四章 数据库和SQL 4-3 数据的更新(UPDATE语句的使用方法)