Разбор задачи 4. Сумма (8 класс)
Тема: математика
Сложность: средняя
Реализация алгоритма в лоб дает только 50 баллов, так как не проходит ограничения по времени при больших `N`. Можно заметить, что в некотором диапазоне частное будет одинаковым и равно `k`. Максимальным значением `j`, при котором частное будет равно `k`, является `[N/k]`. Таким образом суммирование нужно производить диапазонами от `i` до `j`, в котором частное совпадает. Кроме того, для суммирования нужно использовать переменную вещественного типа или int64, чтобы не происходило переполнения. Пример реализации:
var i,j,n:longint;
s,k:int64;
begin
read(n);
i:=1;
s:=0;
while i<=n do
begin
k:=n div i;
j:=n div k;
s:=s+k*(j-i+1);
i:=j+1;
end;
writeln(s);
end.