POJ-1845-Sumdiv 等比数列求和/数学/(二分法/逆元法/变换取模法)

题意:输入a,b,求a^b的所有因子之和

http://poj.org/problem?id=1845


分解a的质因数a=p1^t1*p2^t1........

每个质因数对sum的贡献: 当除去质因数p1时的因数和为sum,当计入p1时,因子和变成sum*p1^0+sum*p1^1+sum*p1^2......+sum*p1^t1


也就是所有的sum=【1+p1+p1^2+p1^3+...+p1^t1】*【p2.....】【p3...】

然后由于是a^b,所以最后是

sum=sum=【1+p1+p1^2+p1^3+...+p1^(t1*b)】*【p2.....】【p3...】


显然就是求关于a的所有质因数的一个 等比数列之和前n项和.


求这个等比数列有几种方法:

1、直接二分递归求:  

求      1 + p + p^2 + p^3 +...+ p^n

当n=奇数,会有偶数项,我们把1和p^(n/2+1)放在一起 p和p^(n/2+1+1)放在一起,以此类推
最后提公因式,得到【1+p^(n/2+1)】*【1+p+p^2+p^3+....+p^(n/2-1)】右边恰为原式的一半
当n=偶数,同理得到【1+p^(n/2)】*【1+p+p^2+....p^(n/2)】
因此二分递归则可以得到答案

2、逆元,用公比求和公式  1+pi+...+pi^n=(pi^(n+1)-1)/(pi-1)
  由于涉及到除法,且mod=9901为素数,所以可以用费马小定理求逆元,只是要注意mod比较小,
当【prim[i]-1】%mod==0(分母是mod的倍数ÿ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值