作业帮 > 综合 > 作业

用pascal语言将1,2,…,9共9 个数分成3组,分别组成3个3位数,且使这3个3位数构成1:2:3的比例,试求出所

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/18 10:38:58
用pascal语言
将1,2,…,9共9 个数分成3组,分别组成3个3位数,且使这3个3位数构成1:2:3的比例,试求出所有满足条件的3个3位数(输出:每行输出3个同一情况的数).
var
a,b,c,i:integer;{a,b,c表示三个3位数}
f:array[0..9]of 0..1;
{用来表示哪些数用了,因为可能出现0,所以不是1..9}
bo:boolean;{标志是不是1~9都用了}
begin
for a:=123 to 329 do
{几个数位不相同,最小为123,最大为329,三倍也要是3位数}
begin
fillchar(f,sizeof(f),0);{数组清零,表示没个数都没用}
bo:=true;{赋初值,true表示该数可用}
b:=2*a;
c:=3*a;{计算另外两个数字}
f[a mod 10]:=1;f[a div 10 mod 10]:=1;f[a div 100]:=1;
f[b mod 10]:=1;f[b div 10 mod 10]:=1;f[b div 100]:=1;
f[c mod 10]:=1;f[c div 10 mod 10]:=1;f[c div 100]:=1;
{拆分a,b,c三个数,用了的数做上标记,赋值为1}
for i:=1 to 9 do{检查是不是1~9都用了}
if f[i]=0 then{i没有用还是0,没有赋值为1}
bo:=false;{把bo变为false,表示此数不可用}
if bo then{bo没有变为false,此数符合题意}
writeln(a,' ',b,' ',c);{输出三个数}
end;
end.