永发信息网

pascal编程:将1~9这9个数字分成三组(每个数字只能用一次),分别组成三个三位数。求大师讲解一下吧!!!

答案:1  悬赏:30  手机版
解决时间 2021-01-07 11:29
pascal编程:将1~9这9个数字分成三组(每个数字只能用一次),分别组成三个三位数。求大师讲解一下吧!!!
最佳答案
var i,j1,j2,j3,k:integer; s:set of 1..9;
begin
for i:=123 to 329 do //满足条件的三位数中最小数的范围
begin
s:=[]; j1:=i; j2:=2*i; j3:=3*i; //s为空集,原数,二倍、三倍
for k:=1 to 3 do //分三次取
begin
s:=s+[j1 mod 10, j2 mod 10, j3 mod 10]; //取每个数的最低位,放到集合中
j1:=j1 div 10; j2:=j2 div 10; j3:=j3 div 10; //去除每个数的最低位
end;
if s=[1..9] then writeln(i,i*2:5,i*3:5); //如果在三个三位数中,取遍了1~9,就是一种方案
end;
end.追问可以不用这种方法,用数组吗?
并且你的程序我连看都看不懂,可以有更简便的吗?用数组就行了。追答var i,j1,j2,j3,j,k:integer; a:array[0..9]of integer;
begin
for i:=123 to 329 do //满足条件的三位数中最小数的范围
begin
fillchar(a,sizeof(a),0);
j1:=i; j2:=2*i; j3:=3*i; //原数,二倍、三倍
for k:=1 to 3 do //分三次取
begin
a[j1 mod 10]:=1;
a[j2 mod 10]:=1;
a[j3 mod 10]:=1; //取每个数的最低位,记录此数已出现过
j1:=j1 div 10; j2:=j2 div 10; j3:=j3 div 10; //去除每个数的最低位
end;
k:=0;
for j:=1 to 9 do inc(k,a[j]);
if k=9 then writeln(i,i*2:5,i*3:5); //如果在三个三位数中,取遍了1~9,就是一种方案
end;
end.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我为外公干什么
公司产品单一,但是又想做B2B平台,怎么才能
开了四年的mg6,时速在70至80时,油门出不顺,连
身份证复印件可以办理旅客乘客临时身份证明吗
长沙男篮亚锦赛是在长沙什么地方比赛的
孵化器孵小鸡正常湿度
用草字组成一个景物写什么好?
悦海馨苑南门地址有知道的么?有点事想过去
保定美术学院分数线是多少
电脑屏幕上有一块花了能修复吗?
做协警有前途吗?我大舅说让我做着一两年,然
求施耐德PLC M258系列的I/O点设置,内存
京剧袁崇焕
有没有什么长高科学的方法,15岁才145怎么办
包贝尔婚礼闹伴娘事件是怎么回事
推荐资讯
天津022开头的骚扰电话
世界气温最高记录(57.8`C)在哪个位置出现?
旅馆无良伴凝情自俏然是什么动物
3m的7分之1和1米的7分之3相比,一样长吗?
皇家宠物食品地址在什么地方,想过去办事,
就是我上课的时候吧,如果老师讲的简单我就听
单选题将3a(x-y)-b(x-y)用提公因式法分解
晚间正能量分享的一段话
10kw用22OV单相电供电需导线多少平方
这一小块是什么?
我二零零四年一月初十出生,我2009年是不是16
给异性闺密结婚发红包发多少
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?