不是VIP会员,不能显示答案

题目解答

题目:
(最大乘积) 一个正整数一般可以分为几个互不相同的自然数的和,如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. 
考点:
分析:
解答:
评论:
老师: