题目大意:
题解:
这题的题目是要求xy=k下方的格点数,这时候看数据K那么大该怎么办呢?
我们发现,对于任意一个格点而言,xy必定是≤k的
这时候显然啊,枚举!
不过k那么大,不可能枚举到K吧?
然后我们分析可以想到,能否以根号k为界去做呢?
没错,这就是正解!
枚举1~根号k,进而推出x≥根号k的情况即可
时间复杂度 :O(根号K)
代码:
const
modn=998244353;
var
i:longint;
ans,k:int64;
begin
assign(input,'count.in'); reset(input);
assign(output,'count.out'); rewrite(output);
readln(k);
ans:=0;
for i:=1 to trunc(sqrt(k)) do
begin
ans:=(ans+k div i) mod modn;
if k div i>trunc(sqrt(k)) then
ans:=(ans+(k div i-trunc(sqrt(k)))) mod modn;
end;
writeln(ans);
close(input); close(output);
end.