回 帖 发 新 帖 刷新版面

主题:求分数

小学数学题:1,2,3...9共9个数,取其中4个作分子,剩下的5个作分母,使这个分数的最简分数为三分之一,求这9个数构成的分数. 

回复列表 (共4个回复)

沙发

program ex080731_1;
  var a,b,c,d,e,f,g,h,i:integer;
  begin
    for a:=1 to 9 do
    for b:=1 to 9 do
    for c:=1 to 9 do
    for d:=1 to 9 do
    for e:=1 to 9 do
    for f:=1 to 9 do
    for g:=1 to 9 do
    for h:=1 to 9 do
    for i:=1 to 9 do
    if(a<>b)and(a<>c)and(a<>d)and(a<>e)and(a<>f)and(a<>g)and(a<>h)and(a<>i)
            and(b<>c)and(b<>d)and(b<>e)and(b<>f)and(b<>g)and(b<>h)and(b<>i)
            and(c<>d)and(c<>e)and(c<>f)and(c<>g)and(c<>h)and(c<>i)
            and(d<>e)and(d<>f)and(d<>g)and(d<>h)and(d<>i)
            and(e<>f)and(e<>g)and(e<>h)and(e<>i)
            and(f<>g)and(f<>h)and(f<>i)
            and(g<>h)and(g<>i)
            and(h<>i)
            and((1000*a+100*b+10*c+d)*3=(10000*e+1000*f+100*g+10*h+i))
            then writeln(a,b,c,d,'/',e,f,g,h,i);
  end.


本人刚学编程4天,没学过什么,只能这样了,不知有没有高人有更强的方法。

板凳

与我编的几乎一样.
谁能更精简一下呢?

3 楼

看着约束条件走
program fenshu;
   var i:integer;
       p,q:string;
   function ok(a,b:string):boolean;
     var i:integer;s:set of '1'..'9';
       begin
         s:=[];
        for i:=1 to length(a) do
            s:=s+[a[i]];
        for i:=1 to length(b) do
            s:=s+[b[i]];
         if s=['1'..'9'] then ok:=true else ok:=false;
        end;
   begin
    for i:=1000 to 9999 do
       begin
         str(i,p);
         str(i*3,q);
         if ok(p,q) then writeln(i,'  ',3*i);
        end;
     end.

4 楼

谁能解释一下这段程序?
function ok(a,b:string):boolean;
     var i:integer;s:set of '1'..'9';
       begin
         s:=[];
        for i:=1 to length(a) do
            s:=s+[a[i]];
        for i:=1 to length(b) do
            s:=s+[b[i]];
         if s=['1'..'9'] then ok:=true else ok:=false;
        end;

我来回复

您尚未登录,请登录后再回复。点此登录或注册