张逸凡ZYF 2014-09-25 06:12:38
点我顶贴
收藏
删除
uses math;
var
i,j,n:longint;
a,f:array[0..1000]of word;
function calc(n:word):word;
var i,t:word;
begin
calc:=1; t:=trunc(sqrt(n));
for i:=2 to t do
if n mod i=0 then inc(calc,i+n div i);
if t*t=n then dec(calc,t)
end;
begin
readln(n); a[2]:=1;
for i:=3 to n do
a[i]:=calc(i);
for i:=2 to n do
for j:=n-i downto 0 do
f[i+j]:=max(f[i+j],f[j]+a[i]);
for i:=2 to n-1 do
f[n]:=max(f[i],f[n]);
write(f[n])
end.