一道完善程序题(pacsal)

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:12:20
第2题
[问题描述]
找出小于33的6个正整数,用这些整数进行加法运算,使得包括原来的整数在内能组成
尽可能多的不同整数。
例如:用2,3,5这3个数能组成下面的数
2,3,5
2+3=5, 5已经存在
2+5=7, 3+5=8, 2+3+5=10
所以用2,3,5能组成6个不同的数。
程序要求:输出所选的这6个数,以及能组成不同整数的个数。
[算法说明]
选择的这6个数,用来组成数时应该尽可能不重复,引入数组a保存找出的这6个数。
[程序清单]
begin
a[1]:=1;t:=0;
for i:=2 to 6 do
begin
____①____;
for j:=1 to i-1 do
s:=____②____;
a[i]:=____③____;
end;
for i:=1 tO 6 dO
begin
t:=____④____;
write(a[i],'')
end;
writeln('能组成不同整数的个数:',t)
end.

Program tttt;
var a:Array[1..6]of integer;
t,i,j,s:integer;
begin
a[1]:=1;t:=0;
for i:=2 to 6 do
begin
s:=0;
for j:=1 to i-1 do
s:=s+a[j];
a[i]:=s+1;
end;
for i:=1 to 6 do
begin
t:=t*2+1;
write(a[i],' ')
end;
writeln('能组成不同整数的个数:',t)
end.

s用于计算前面所有数字的和,新的数字是前面所有数字的和加1

t用于计算能组成不同整数的个数,每增加一个数可以在前面的每一个算式上加或不加这个数,另外一个选择是只使用这个数,例如
前面有2个数时有3个表达式
1
1+2
2
再增加一个数的话有7个表达式
1 1+4
1+2 1+2+4
2 2+4
4