C为组合数,B为伯努利数

具体推到过程略

参考博客:http://blog.csdn.net/acdreamers/article/details/38929067#

(我的式子和博客中的不一样,不过思想是一样的)

具体见代码:

  1. const int MOD = + ;
  2.  
  3. const int maxn = + ;
  4. LL C[maxn][maxn];
  5. LL inv[maxn];
  6. LL B[maxn];
  7. LL n, k;
  8. void init()
  9. {
  10. scanf("%lld%lld", &n, &k);
  11. }
  12.  
  13. void getC()
  14. {
  15. C[][] = ;
  16. for(int i = ; i < maxn; i++) {
  17. C[i][] = C[i][i] = ;
  18. for(int j = ; j < i; j++)
  19. C[i][j] = (C[i-][j] + C[i-][j-]) % MOD;
  20. }
  21. }
  22.  
  23. void getInv() //O(n) 求所有逆元
  24. {
  25. inv[] = ;
  26. for (int i = ; i < maxn; i++)
  27. {
  28. inv[i] = (MOD - MOD / i) * inv[MOD % i] % MOD;
  29. }
  30. }
  31.  
  32. void getB() //求伯努利数
  33. {
  34. B[] = ;
  35. for (int i = ; i < maxn - ; i++)
  36. {
  37. for (int j = ; j < i; j++)
  38. {
  39. B[i] = (B[i] + C[i+][j] * B[j]) % MOD;
  40. }
  41. B[i] = (-inv[i+] * B[i] % MOD + MOD) % MOD;
  42. }
  43. }
  44.  
  45. LL ni[maxn];
  46. void solve()
  47. {
  48. n %= MOD; //1e18会爆
  49. ni[] = ;
  50. for (int i = ; i <= k + ; i++) ni[i] = ni[i-] * (n + ) % MOD;
  51. LL ans = ;
  52. for (int i = ; i <= k; i++)
  53. {
  54. ans = (ans + C[k+][i] * ni[k+-i] % MOD * B[i] % MOD) % MOD;
  55. }
  56. ans = ans * inv[k+] % MOD;
  57. printf("%lld\n", ans);
  58. }
  59.  
  60. int main()
  61. {
  62. getInv();
  63. getC();
  64. getB();
  65. int T;
  66. scanf("%d", &T);
  67. while (T--)
  68. {
  69. init();
  70. solve();
  71. }
  72. return ;
  73. }

51nod 1228 序列求和 ( 1^k+2^k+3^k+...+n^k )的更多相关文章

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

    1228 序列求和  题目来源: HackerRank 基准时间限制:3 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 T(n) = n^k,S(n) = T(1 ...

  2. 51Nod - 1228 序列求和 (自然数幂和+伯努利数)

    https://vjudge.net/problem/51Nod-1228 Description T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和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^ ...

  4. 51nod 1258 序列求和 V4

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1258 1258 序列求和 V4  基准时间限制:8 秒 空间限制:131 ...

  5. 51NOD 1258 序列求和 V4 [任意模数fft 多项式求逆元 伯努利数]

    1258 序列求和 V4 题意:求\(S_m(n) = \sum_{i=1}^n i^m \mod 10^9+7\),多组数据,\(T \le 500, n \le 10^{18}, k \le 50 ...

  6. [51nod 1822]序列求和

    \(k\leq 200000\) 考虑转化成枚举 \(k\) 的形式 我们错位相减! \[A_k=\sum_{i=1}^N i^K\times R^i \\ RA_k=\sum_{i=2}^{N+1} ...

  7. [51nod]1229 序列求和 V2(数学+拉格朗日差值)

    题面 传送门 题解 这种颓柿子的题我可能死活做不出来-- 首先\(r=0\)--算了不说了,\(r=1\)就是个裸的自然数幂次和直接爱怎么搞怎么搞了,所以以下都假设\(r>1\) 设 \[s_p ...

  8. 【51Nod1258】序列求和V4(FFT)

    [51Nod1258]序列求和V4(FFT) 题面 51Nod 多组数据,求: \[Ans=\sum_{i=1}^ni^k,n\le 10^{18},k\le50000\] 题解 预处理伯努利数,时间 ...

  9. HDU 5358 First One 求和(序列求和,优化)

    题意:给定一个含n个元素的序列,求下式子的结果.S(i,j)表示为seq[i...j]之和.注:对于log20可视为1.数据量n<=105. 思路:即使能够在O(1)的时间内求得任意S,也是需要 ...

随机推荐

  1. 使用ISO文件安装Linux

    一. 准备知识 1. ISO文件 我们普遍使用的ISO文件是指包含着整个CD-ROM(ISO-9660 文件系统)内容的 映象, 是整个碟片从0扇区到最后一个扇区的完整复制,经常被用来在网络上传输 对 ...

  2. ARMLinux下Alignment trap的一些测试 【转自 李迟的专栏 CSDN http://blog.csdn.net/subfate/article/details/7847356

    项目中有时会遇到字节对齐的问题,英文为“Alignment trap”,如果直译,意思为“对齐陷阱”,不过这个说法不太好理解,还是直接用英文来表达. ARM平台下一般是4字节对齐,可以参考文后的给出的 ...

  3. github的使用步骤及体会

      对于github的readme文件的提交,很是坎坷.   首先打开了github的首页,对于满屏的英文,我是头大的.百度搜索教程,百度翻译等等,这些都使用上了.带着试一试的态度,我按了creat ...

  4. 几种垂直居中的方式及CSS图片替换技术

    由于块级元素的高度是可以设置的,所以对于块级元素的垂直居中比较简单. 方法一: 在不定高的情况下,把元素的上下内边距设为同一个值即可实现,即padding :10px   0; 以上方法针对块级元素和 ...

  5. adb -s emulator-5554 install JDKCast-PAP.apk

    multi-emulators direct to install app adb -s emulator-5554 install JDKCast-PAP.apk

  6. 2048游戏C语言代码

    如果程序里面有错误,希望大家能够批评指正! #include<stdio.h> #include<stdlib.h> #include<conio.h> #incl ...

  7. node.js实用小模块

    1.浮点数操作 npm install float 2.MD5加密类 npm install MD5 3.xml解析类 1 npm install elementtree 4.转换字符串大小写 1 n ...

  8. centos单用户模式修改ROOT密码

    首先启动的时候的时候,需要进入单用户模式(进入单用户模式的前提是系统引导器能正常工作),单用户模式是不需要输入密码,并且(进入单用户模式,没有开启网络服务,不支持远程连接 )网上说可以通过GRUB ( ...

  9. .net 下判断中英文字符串长度

    System.Text.Encoding.Default.GetBytes(str).Length

  10. KI的斐波那契_DFS

    Description KI十分喜欢美丽而优雅的斐波那契数列,最近他新认识了一种斐波那契字符串,定义如下 f (0) = b, f (1) = a, f (2) = f (1) + f (0) = a ...