给一个s,用和不超过s 的数使得他们的因数和最大,不包括本身。
水dp
f[i]:=f[k]+f[n-k];
const
maxn=1000;
var
f:array [0..maxn] of longint;
i,j,n,m,x,k:longint;
function max(x,y:longint):longint;
begin
if x>y then exit(x)
else exit(y);
end;
begin
assign(input,'maxsum.in'); reset(input);
assign(output,'maxsum.out'); rewrite(output);
readln(n);
for i:=1 to n do
begin
x:=0;
for j:=1 to i-1 do
if i mod j=0 then x:=x+j;
f[i]:=x;
end;
for i:=1 to n do
for k:=0 to i-1 do
f[i]:=max(f[i],f[i-k]+f[k]);
writeln(f[n]);
close(input); close(output);
end.