求助:Pascal编程

来源:百度知道 编辑:UC知道 时间:2024/06/05 10:00:39
3.合下面条件的5个正整数:
(1)5个数之和为23;
(2)从这5个数中选取不同的数作加法,可得1-23中的所有自然数,打印这5个数及选取数组成的1--23的加法式。

用Pascal语言编程
求程序和说明

var a:array[1..5] of longint;
b,c:array[0..23] of longint;
s,m:longint;

procedure check;
var i,j,k,l:longint;
begin
fillchar(b,sizeof(b),0);
b[0]:=1;
for k:=1 to 5 do
for l:=23-a[k] downto 0 do
if b[l]=1 then begin b[l+a[k]]:=1;c[l+a[k]]:=l;end;
l:=0;
for k:=1 to 23 do l:=l+b[k];
if l=23 then
begin
inc(m);
writeln(m,')');
writeln(a[1],' ',a[2],' ',a[3],' ',a[4],' ',a[5]);
for k:=1 to 23 do
begin
l:=k;
while c[l]<>0 do
begin write(l-c[l],'+');l:=c[l];end;
writeln(l,'=',k);
end;
writeln;
end;
end;

begin
a[1]:=1;s:=1;m:=0;
for a[2]:=a[1] to 23 do
begin
s:=s+a[2];
if s<23 then
for a[3]:=a[2] to 23 do
begin
s:=s+a[3];
if s<23 then