Cod sursa(job #462645)

Utilizator lianaliana tucar liana Data 12 iunie 2010 15:27:20
Problema Multiplu Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.23 kb
program multiplu;
var f, g:text;
    val, i, p, u, prod, cmmmc, a, b, r:longint;
    v, pr:array[1..2000000] of longint;
    cf, fol:array[0..2000000] of 0..1;

procedure aflare_cmmmc;
  begin
    prod:=a*b;
    r:=a mod b;
    while r>0 do
      begin
        a:=b;
        b:=r;
        r:=a mod b;
      end;
    cmmmc:=prod div b;
  end;

procedure rezolvare;
  begin
    v[1]:=1;
    p:=1;
    u:=1;
    cf[1]:=1;
    pr[1]:=-1;
    fol[1]:=1;
    while p<=u do
      begin
        for i:=0 to 1 do
          begin
            val:=(v[p]*10+i) mod cmmmc;
            if fol[val]=0 then
              begin
                u:=u+1;
                v[u]:=val;
                cf[u]:=i;
                pr[u]:=p;
                fol[val]:=1;
                if val=0 then
                  p:=u+5;
              end;
          end;
        p:=p+1;
     end;
  end;

procedure afisare(poz:longint);
  begin
    if pr[poz]<>-1 then
      afisare(pr[poz]);
    write(g,cf[poz]);
  end;

  begin
    assign(f,'multiplu.in'); reset(f);
    assign(g,'multiplu.out'); rewrite(g);
    readln(f,a,b);
    aflare_cmmmc;
    rezolvare;
    afisare(u);
    writeln(g);
    close(f);
    close(g);
  end.