作业帮 > 综合 > 作业

pascal7一个简单问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/04/29 18:52:55
pascal7一个简单问题
一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,…。现在你的任务是将指定的正整数n分解成若干个互不相同的自然数的和,且使这些自然数的乘积最大。
【输入】
只一个正整数n,(3≤n≤10000)。
【输出】
第一行是分解方案,相邻的数之间用一个空格分开,并且按由小到大的顺序。
第二行是最大的乘积。
【样例】
输入:
10
输出:
2 3 5
30
program Eugene; var la,lb,i,j,n,k:longint; a,b:array[0..300] of longint; procedure did1; var i,j,k,m:longint; begin la:=1; while n>la do begin a[la]:= la+1; inc(la); n:=n-la; end; dec(la); if n>0 then begin m:=la; while n>0 do begin inc(a[m]); dec(n); dec(m); if m=0 then m:=la; end; end; end; procedure did2; var i,j:longint; begin fillchar(b,sizeof(b),0); b[1]:=1; lb:=1; for i:= 1 to la do begin for j:=1 to lb do b[j]:=b[j]*a[i]; for j:=1 to lb+3 do begin b[j+1] := b[j+1]+ b[j] div 10; b[j]:= b[j] mod 10; end; lb:=lb+4; while (b[lb])=0 do dec(lb) ; end; end; begin readln(n); if n