一个有♂趣的问题:
求(sum_{i=1}^N lfloor frac Ni floor) ,(N leq 10^{12})
显然不能直接做废话
经过一番冷静推理暴力打表 ,我们发现以下性质:
$ 1. large lfloor frac Ni floor$最多只有(2sqrt{N})种取值
证明:对于(ile sqrt{N},) 只有 (sqrt{N}) 种,对于 (i>sqrt{N},large{frac Ni}<sqrt{N}),也只有 (sqrt{N}) 种取值,共计 (2 sqrt{N}) 种(;;Box)
(2.) 设 $large lfloor frac N{i'} floor $ 与 (large lfloor frac Ni floor) 相等,则 (i') 的最大值为 $large left lfloor frac N{left lfloor frac Ni ight floor } ight floor $
证明:
设 (large{ lfloor frac Ni floor}=k) ,于是可以写成 (ki+p=N,1le p<i) 的形式,若 (large{lfloor frac N{i+d} floor}=k) ,于是有 (k(i+d)+p'=N) ,可以得到 (p'=p-kd) ,则 (d) 能取的最大值为 (large lfloor frac pk floor) ,于是 :
然后,设两个指针 (L) 和 (R) , (L) 的初始值为 (1) ,每次令 (large R=left lfloor frac N{lfloor frac NL floor} ight floor) ,将 (large (R-L+1)cdot lfloor frac NL floor) 累加至答案中 ,再令 (L=R+1)
由于 (large lfloor frac NL floor) 只有 (2sqrt N) 种取值 ,且单调递减,则最多只有 (2sqrt N) 个取值不同的段,时间复杂度为 (O(sqrt N))