Cod sursa(job #167883)

Utilizator tamas_iuliaTamas Iulia tamas_iulia Data 30 martie 2008 12:26:24
Problema Multiplu Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.05 kb
var a,b,m,i,p,u:longint;
    r,x,y:array[0..2000001] of longint;
    z:array[0..2000001] of boolean;
    f,g : text;

function cmmdc(a,b : longint):longint;
var c : longint;
begin
  while b<>0 do
  begin
    c:=a mod b;
    a:=b;
    b:=c;
  end;
  cmmdc:=a;
end;

begin
assign(f,'multiplu.in');reset(f);
assign(g,'multiplu.out');rewrite(g);
readln(f,a,b);
m:=(a*b) div cmmdc(a,b);
r[1]:=1; x[1]:=1; y[1]:=1;
p:=1; u:=1;
while (p<=u) do
  begin
    if z[(r[p]*10) mod m]=false then
    begin
      inc(u);
      r[u]:=(r[p]*10) mod m;
      x[u]:=0;
      y[u]:=p;
        if (r[u]=0) then
        break;
      z[r[u]]:=true;
    end;
    if z[(r[p]*10+1) mod m]=false then
    begin
      inc(u);
      r[u]:=(r[p]*10+1) mod m;
      x[u]:=1;
      y[u]:=p;
        if (r[u]=0) then
        break;
      z[r[u]]:=true;
    end;
  inc(p);
  end;
while u<>y[u] do
begin
  inc(r[0]);
  r[r[0]]:=x[u];
  u:=y[u];
end;
inc(r[0]);
r[r[0]]:=1;
for i:=r[0] downto 1 do
        write(g,r[i]);
writeln(g);
close(g);
end.