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 = 5,S(n) = 1^2 + 2^2 + 3^2 + 4^2 + 5^2 = 55。
由于结果很大,输出S(n) Mod 1000000007的结果即可。
输入
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 5000)
第2 - T + 1行:每行2个数,N, K中间用空格分割。(1 <= N <= 10^18, 1 <= K <= 2000)
输出
共T行,对应S(n) Mod 1000000007的结果。
输入样例
3
5 3
4 2
4 1
输出样例
225
30
10

求自然数的幂和,有一个基于伯努利数的公式。

于是线性处理出每一项,那么每个case就是线性求解了。

伯努利数怎么计算呢?

首先B0=1,然后有

将Bn提取出来,得到

这样就能递推伯努利数了。

#include <bits/stdc++.h>
using namespace std;
const int maxn = 2010;
const int N = 2005;
typedef long long ll;
const ll mod = 1e9 + 7;
ll inv[maxn], b[maxn], fac[maxn];
ll fiv[maxn];
ll qpow(ll a, ll b) {ll ans = 1;while (b) {if (b & 1) {ans = (ans * a) % mod;}a = (a * a) % mod;b >>= 1;}return ans % mod;
}ll C(ll n, ll m) {return fac[n] * fiv[m] % mod * fiv[n - m] % mod;
}int main() {b[0] = 1; inv[1] = 1, fac[0] = 1,fiv[0] = 1;for (int i = 2; i <= N; i++) {inv[i] = (mod - mod / i) * inv[mod % i] % mod;}for (int i = 1; i <= N; i++) {fac[i] = fac[i - 1] * i % mod;fiv[i] = qpow(fac[i], mod - 2);}for (int i = 1; i <= N; i++) {ll sum = 0;for (int j = 0; j < i; j++) {sum = (sum + C(i + 1, j) * b[j]) % mod;}b[i] = -inv[i + 1] * sum;b[i] = (b[i] % mod + mod) % mod;}ll T, n, k;cin >> T;while (T--) {cin >> n >> k;ll p = (n + 1) % mod; ll mul = p;ll ans = 0;for (int i = 1; i <= k + 1; i++) {ans = (ans + C(k + 1, i) * b[k + 1 - i] % mod * mul % mod) % mod;mul = mul * p % mod;}cout << ans * inv[k + 1] % mod << endl;}return 0;
}

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

  1. 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 ...

  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. Java多线程之Callable接口的实现
  2. 个人易遗忘的代码记录
  3. woff, 在网页中嵌入任意字体的解决方案
  4. C语言经典例26-利用递归方法求阶乘
  5. 【PHP】多线程请求 curl_multi_init()
  6. 活动运营的核心要点:如何保证拉新用户是有价值的?
  7. 工控设备 如何将数据发送到串口_嵌入式无风扇工控机在水质监测系统中的应用...
  8. unity中如何解决镜头穿透模型?
  9. Mysql常用分组聚合函数(统计行的数量、最大值、最小值、平均值、求和)
  10. 10备忘录没有表格_我的投资备忘录(2020年12月04日)
  11. .net core 后台 post设置等待时间_[vueelementadmin]前端发送的post请求的数据,后端接收不到并报EOFException异常的解决方案...
  12. 一道经典极限题的分析与求解
  13. 四款855旗舰对比:除开价格,各有优点
  14. elk日志分析系统_ELK 日志分析系统
  15. axure iphone8元件库_Axure中移动端原型设计方法(附IPhoneX和IPhone8最新模板)
  16. Excel各种条件求和的公式汇总
  17. 十载寒冰,难凉热血——2020CSDN年度博客之星Top10心路历程
  18. H3C交换机WEB管理时间_H3C 交换机之VLAN配置与VLAN间访问
  19. 为什么快手不能左右滑了_快手现在为什么不能滑动播放了
  20. 解决微信环境下无法通过链接唤起App Store、微信访问App Store 链接白屏问题

热门文章

  1. CAD图纸打印时如何去掉图纸边框的白边?
  2. C#调用RabbitMQ实现消息队列
  3. HTML如何制作音乐网站(如何搭建个人音乐网页)
  4. Android 手动显示和隐藏软键盘
  5. 编译原理逆波兰式实验java_逆波兰式算法的编译原理实验过程.doc
  6. 中文分词与关键词提取概述
  7. Android 的录音分享特性
  8. 「好书推荐」那些精彩的引人深思、充满反转的推理小说推荐
  9. 量子科技商业化寻路,资本造势但技术落地成难|科股宝
  10. NodeJS Warning: Accessing non-existent property ‘padLevels‘ 解决办法