Помощь - Поиск - Пользователи - Календарь
Полная версия: Ребус
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Гость
Ребус один+один+один+один+один=пять

Посмотрите плз, есть ли ошибка или это просто ребус без решения? nea.gif


uses crt;

var
  o , d , i , n , p , y , a , t: 0 .. 9;

  dig : set of 0..9;
  sum, pyat: longint;

begin
  clrscr;
  for o:=0 to 9 do begin
    include(dig,o);
    for d:=0 to 9 do if not (d in dig) then begin
      include(dig,d);
      for i:=0 to 9 do if not (i in dig) then begin
        include(dig,i);
        for n:=0 to 9 do if not (n in dig) then begin
          include(dig,n);
          for p:=0 to 9 do if not (p in dig) then begin
            include(dig,p);
            for y:=0 to 9 do if not (y in dig) then begin
              include(dig,y);
              for a:=0 to 9 do if not (a in dig) then begin
                include(dig,a);
                for t:= 0 to 9 do if not (t in dig) then begin
                  include(dig, t);



    sum :=5*(o*1000 + d*100 + i*10 + n);
    pyat :=p*1000+y*100+a*10+t;

    if sum = pyat then
      writeln(':', o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'=', p,y,a,t);
                    exclude(dig, o)
                  end;
                  exclude(dig, d);
                end;
                exclude(dig,i);
              end;
              exclude(dig,n);
            end;
            exclude(dig,p);
          end;
          exclude(dig,y);
        end;
        exclude(dig,a);
      end;
      exclude(dig,t);
    end;
end.


буду очень благодарен give_rose.gif
volvo
Есть ошибка... Исключать элементы из множества надо в обратном порядке:
uses crt;

var
  o , d , i , n , p , y , a , t: 0 .. 9;

  dig : set of 0..9;
  sum, pyat: longint;

begin
  clrscr;
  for o:=0 to 9 do begin
    include(dig,o);
    for d:=0 to 9 do if not (d in dig) then begin
      include(dig,d);
      for i:=0 to 9 do if not (i in dig) then begin
        include(dig,i);
        for n:=0 to 9 do if not (n in dig) then begin
          include(dig,n);
          for p:=0 to 9 do if not (p in dig) then begin
            include(dig,p);
            for y:=0 to 9 do if not (y in dig) then begin
              include(dig,y);
              for a:=0 to 9 do if not (a in dig) then begin
                include(dig,a);
                for t:= 0 to 9 do if not (t in dig) then begin
                  include(dig, t);



    sum :=5*(o*1000 + d*100 + i*10 + n);
    pyat :=p*1000+y*100+a*10+t;

    if sum = pyat then
      writeln(':', o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'+',o,d,i,n,'=', p,y,a,t);
                    exclude(dig, t)
                  end;
                  exclude(dig, a);
                end;
                exclude(dig,y);
              end;
              exclude(dig,p);
            end;
            exclude(dig,n);
          end;
          exclude(dig,i);
        end;
        exclude(dig,d);
      end;
      exclude(dig,o);
    end;
end.

Гость
О,точно! Пасиб те огромное!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.