\([CQOI2007] 余数求和\)
求 \(G(n,k)=\sum_{i=1}^{n}k \mod i\)
因为 \(k \mod i=k-\lfloor \frac{k}{i}\rfloor*i\)
所以就成了求 \(n*k-\sum_{i=1}^{n}\lfloor \frac{k}{i}\rfloor*i\)
求后者:首先枚举左端点 \(l\),然后就可以求出左端点所属区间的 \(\lfloor \frac{k}{i}\rfloor\) 设为 \(t\) ,紧接着就可以求出右端点 \(r\) 为 \(k/t\) (因为整除时最大,再大一点 \(t\)会变小) ,计算区间的贡献就是 \((r-l+1)*t*(l+r)* \frac{1}{2}\) 长度 \(\times\) t \(\times\) 区间端点平均值,就可以解决了。
标签:lfloor,frac,分块,sum,rfloor,端点,整除 From: https://www.cnblogs.com/jinjiaqioi/p/17627247.html