Подразделы

Другие разделы

Дата и время

19/04/2024 18:40:07

Авторизация

Имя:
Пароль:
Зарегистрироваться
Восстановить пароль
 

printРазбор задачи 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.
loading