Cod sursa(job #123810)

Utilizator CezarMocanCezar Mocan CezarMocan Data 17 ianuarie 2008 14:06:43
Problema Multiplu Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.34 kb
var a,b,c,i,j,p,u:longint;
    v,x,y:array[0..2000100] of longint;
    z:array[0..2000100] of boolean;

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

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