自然数幂和与伯努利数 小结

自然数幂和与伯努利数 小结

最近在看自然数幂和这类问题,觉得ACdreamer这两篇博客写得不错,可以看下。

http://blog.csdn.net/acdreamers/article/details/38929067

http://blog.csdn.net/acdreamers/article/details/39941387

先对伯努利数的一些性质总结一下:

1. 伯努利数与自然数幂的关系:

2. 伯努利数递推式:


3. 其他:


更多性质可以看


题目一:

题意:

令自然数幂和为S(k,n)=1^k+2^k+...+n^k
S(k,n)可以表述成:
S(k,n)=1/M*(a[k+1]*n^(k+1)+a[k]*n^k+...+a[1]*n+a[0])
给出k,求最小的正整数M,使得a[0]...a[k+1]都为整数。
限制:
1 <= k <=20
题解:
http://blog.csdn.net/whai362/article/details/43128405

题目二:

题意:

求自然数幂和。
限制:
0 <= n <= 10^50; 1 <= k <= 100
题解:

题目三:

题意:

S(k,n)=1^k+2^k+...+n^k
求自然数幂和对1e9+7取模。
限制:
1<= n <= 10^18; 1 <= k <= 2000

题解:

题目四:

题意:

S(k,n)=1^k+2^k+...+n^k
求自然数幂和对1e9+7取模。
限制:
1<= n <= 10^18; 1 <= k <= 50000

这道题貌似要用fft求多项式的逆元,但被我用打表水过了, 具体方法是:
先O(n^2)预处理出前29000的伯努利数,只要好好优化一下6秒就可以了。
然后打出后21000的伯努利数,然后用64进制压缩。
这样一来代码量就减少到了62k左右,然后就能ac了。
这个就是本渣的做法。

题目五:
题意:
求(1^n+2^n+...+a^n)MOD(p)的值。
限制:
1 <= p <= 10000; 1 <= n <= 10^100000; 1<= a <= 10^18
思路:
1. 循环节长度为p。
2. 对i^n由于n很大,可以用指数循环节公式来降幂。
复杂度为O(plog(p))

题目六:
题意:
求(1^n+2^n+...+p^n)MOD(p)的值。
限制:
1 <= p <= 10^12; 1 <= n <= 10^100000; n是奇数
思路:
先看[x^n+(p-x)^n]MOD(p)
展开=[ x^n+ C(n,0)*p^n+C(n,1)*p^(n-1)*(-x)^1+...+C(n,n-1)*p*(-x)^(n-1) + C(n,n)*(-x)^n ]MOD(p)
       =[ x^n+(-x)^n]MOD(p) + ( 中间那块 )MOD(p)
       =[ x^n+(-x)^n]MOD(p)
得:
1. 如果p为奇数,ans=0
2. 如果p为偶数,ans=((p/2)^n)MOD(p)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值