5.16 (数论)E. Zeldain Garden解题报告

题目大意:
输入n,m , 计算[n,m]范围内的每个数的因子个数的总和。

数据范围n,m在1e12左右。

区间这么大,处理方式就是对区间端点的维护。
设置一个函数R(N)来计算[1,x]范围内的每个数的因子个数的总和,分别计算出R(m)和R(n-1),二者一减,便得到题目需要的n~m区间的了。

再来处理一下时间复杂度,大数通常的处理思路就是计算到sqrt为止,复杂度:O(√n)。

思考过程:
小于sqrtN的因子在所有数中有多少:∑N/i (i=1,…,sqrtN)
大于sqrtN的因子在所有数中有多少: ∑N/i (i=1,…,sqrtN)
这里有重复!
“因子对”里的数都小于sqrtN的那些因子其实被重复加了一遍
也就是多加了Q*Q个因子(可以理解以组合(?,?)的思路来理解)

所以R(N)=2*∑N/i (i=1,…,sqrtN) - Q^2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值