讨论 / 题解!
张逸凡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.

查看更多回复
提交回复