传送门 首先
imodj=i−int(ij)∗j
然后答案就是
i2−∑j=1int(ij)∗j
发现我们可以按照j分块。 然后愉快的水过了。
var
n,k,r,i,t,ans:int64;
begin
read(n,k);
if n>k
then begin ans:=(n-k)*k; n:=k;
end;
r:=
0; i:=
1;
while i<=n
do begin
t:=k
div i; r:=k
div t;
if (r>=n)
then r:=n;
ans:=ans+(r-i+
1)*k-(r-i+
1)*(i+r)
div 2*t;
i:=r+
1;
end;
write(ans);
end.
转载请注明原文地址: https://ju.6miu.com/read-665657.html