(最大乘积) 一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。
下面给出的程序是将指定的不超过200的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。请将程序补充完整。
Program xx402;
var
n,k,m,i,j:integer;
a:array[0..30] of integer;
s:qword;
begin
readln(n);
k:=2;
fillchar(a,sizeof(a),0);
while n>=k do begin
a[k]:=k; n:=n-k ;
inc(k);
end;
m:=k-1;
for i:=m downto 2 do
if n>0 then begin
n:=n-1;
inc(a[i]) ;
end
else break;
for i:=m downto 2 do
if n>0 then begin
a[i]:=a[i]+1;
dec(n);
end
else break;
s:=1;
for i:=1 to 30 do
if a[i]>0 then s:=s*a[i];
writeln(s);
end.