问题:
给出 (n,k),快速求出:
[Large{sum_{i = 1}^{n} k mod i}
]
对于(20\%)的数据,(n leq 10^{6} , 1 leq k leq 10^9)
对于(100\%)的数据,(n leq 10^{12} , 1 leq k leq 10^9)
方法一:
直接(O(n))暴力求解,期望得分20分。
方法二:
把式子化简:
[Largeegin{aligned}sum_{i = 1}^{n} k mod i & = sum_{i = 1}^{n} k - leftlfloordfrac{k}{i}
ight
floor i \ & = sum_{i = 1}^{n} k - sum_{i = 1}^{n}leftlfloordfrac{k}{i}
ight
floor i \ & = nk - sum_{i = 1}^{n}leftlfloordfrac{k}{i}
ight
floor i end{aligned}
]
假设 (n = k = 5)。那么(leftlfloordfrac{k}{i} ight floor) 分别是:
显然对于整数(d),满足(leftlfloordfrac{k}{i} ight floor=d)的(i)必然是一段连续的区间([l,r])。那么且该区间的贡献为(dsum_{i=l}^ri=dcdotfrac{(r-l+1)(l+r)}{2})
这样就可以(O(sqrt{n}))求解了,期望得分100分