51nod 1228 序列求和 ( 1^k+2^k+3^k+...+n^k )

C为组合数,B为伯努利数
具体推到过程略
参考博客:http://blog.csdn.net/acdreamers/article/details/38929067#
(我的式子和博客中的不一样,不过思想是一样的)
具体见代码:
const int MOD = + ; const int maxn = + ;
LL C[maxn][maxn];
LL inv[maxn];
LL B[maxn];
LL n, k;
void init()
{
scanf("%lld%lld", &n, &k);
} void getC()
{
C[][] = ;
for(int i = ; i < maxn; i++) {
C[i][] = C[i][i] = ;
for(int j = ; j < i; j++)
C[i][j] = (C[i-][j] + C[i-][j-]) % MOD;
}
} void getInv() //O(n) 求所有逆元
{
inv[] = ;
for (int i = ; i < maxn; i++)
{
inv[i] = (MOD - MOD / i) * inv[MOD % i] % MOD;
}
} void getB() //求伯努利数
{
B[] = ;
for (int i = ; i < maxn - ; i++)
{
for (int j = ; j < i; j++)
{
B[i] = (B[i] + C[i+][j] * B[j]) % MOD;
}
B[i] = (-inv[i+] * B[i] % MOD + MOD) % MOD;
}
} LL ni[maxn];
void solve()
{
n %= MOD; //1e18会爆
ni[] = ;
for (int i = ; i <= k + ; i++) ni[i] = ni[i-] * (n + ) % MOD;
LL ans = ;
for (int i = ; i <= k; i++)
{
ans = (ans + C[k+][i] * ni[k+-i] % MOD * B[i] % MOD) % MOD;
}
ans = ans * inv[k+] % MOD;
printf("%lld\n", ans);
} int main()
{
getInv();
getC();
getB();
int T;
scanf("%d", &T);
while (T--)
{
init();
solve();
}
return ;
}
51nod 1228 序列求和 ( 1^k+2^k+3^k+...+n^k )的更多相关文章
- 51nod 1228 序列求和(伯努利数)
1228 序列求和 题目来源: HackerRank 基准时间限制:3 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 收藏 关注 T(n) = n^k,S(n) = T(1 ...
- 51Nod - 1228 序列求和 (自然数幂和+伯努利数)
https://vjudge.net/problem/51Nod-1228 Description T(n) = n^k,S(n) = T(1) + T(2) + ...... T(n).给出n和k, ...
- 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^ ...
- 51nod 1258 序列求和 V4
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1258 1258 序列求和 V4 基准时间限制:8 秒 空间限制:131 ...
- 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 ...
- [51nod 1822]序列求和
\(k\leq 200000\) 考虑转化成枚举 \(k\) 的形式 我们错位相减! \[A_k=\sum_{i=1}^N i^K\times R^i \\ RA_k=\sum_{i=2}^{N+1} ...
- [51nod]1229 序列求和 V2(数学+拉格朗日差值)
题面 传送门 题解 这种颓柿子的题我可能死活做不出来-- 首先\(r=0\)--算了不说了,\(r=1\)就是个裸的自然数幂次和直接爱怎么搞怎么搞了,所以以下都假设\(r>1\) 设 \[s_p ...
- 【51Nod1258】序列求和V4(FFT)
[51Nod1258]序列求和V4(FFT) 题面 51Nod 多组数据,求: \[Ans=\sum_{i=1}^ni^k,n\le 10^{18},k\le50000\] 题解 预处理伯努利数,时间 ...
- HDU 5358 First One 求和(序列求和,优化)
题意:给定一个含n个元素的序列,求下式子的结果.S(i,j)表示为seq[i...j]之和.注:对于log20可视为1.数据量n<=105. 思路:即使能够在O(1)的时间内求得任意S,也是需要 ...
随机推荐
- 7月17日——高校就业信息网站功能及数据获取之python爬虫
本周我们小组在分析上周用户需求之后,确定了网站的主要框架和功能.数据收集和存储方式,以及项目任务分配. 一.网站的主要框架和功能. 网站近期将要实现的主要功能有,先重点收集高校(华东五校)就业宣讲会的 ...
- AmazeUI定制
定制流程 下载 Amaze UI 源码:从 GitHub 选择版本,点击 Source code (zip) 下载并解压(定制只适用于 Amaze UI 2.x): 下载安装 Node.js: 全局安 ...
- Mysql EF Code First
1.更新程序包EntityFramework->6.1.3 2.下载程序包MySql.Data.Entities(Ver:6.8.3) 3.修改config.cs或者web.config,包含以 ...
- 《C++primer》v5 第7章 类 读书笔记 习题答案
7.1.7.2.7.3 #include<iostream> #include<cstdio> #include<vector> #include<strin ...
- 转载——C++控制台贪吃蛇代码
游戏截图: 以下是3个代码文件: Snake_Class.h文件: 1 #ifndef SNAKE 2 #define SNAKE 3 4 #include<windows.h> 5 #i ...
- alpha值的问题
但凡图像都会涉及到透明度问题.使用透明度之后就可以看到多层图像.Alpha值就是用于描述透明度的参量.Alpha值是一个百分数,alpha=1表示源文件发出的光全部被观察者观察到. 既然是透明度,那么 ...
- bootstraps字体图标无法显示
使用bootstraps字体图标,必须在css的同级文件夹下,建立新的文件夹为fonts,放入一下文件. 在还是无法显示字体图标的情况下,可查看bootstraps.css中的 @font-face ...
- linux装JDK
一.安装sun java升 级到ubuntu 11.10之后.ubuntu 默认自带的是openjdkjava.默认情况这个是能够使用的,但是如果你想搭建专业的开发环境,还是需要使用sun的靠谱.另外 ...
- “-webkit-appearance: none”按钮样式作用!
-webkit-appearance: none,可以去除浏览器默认样式.
- 指针数组 null与空字符串
指针数组常适用于指向若干字符串,这样使字符串处理更加灵活方便. 在c++中,null表示:对象为空,它是对指针而言的.而""表示:值为空,它是对字符串而言的.