Pagini recente » Cod sursa (job #2040459) | Cod sursa (job #2180238) | Cod sursa (job #2415094) | Cod sursa (job #1837642) | Cod sursa (job #124843)
Cod sursa(job #124843)
var fi,fo:text;
rest:array[0..2000000]of char;
up,cif:array[0..2000000]of longint;
coada:array[1..2000000]of longint;
a,b,M,rst,first,last:longint;
numar,numar1,numar2:longint;
procedure qin(vl:longint);
begin
coada[last]:=vl;
inc(last);
end;
procedure qout(var vl:longint);
begin
vl:=coada[first];
inc(first);
end;
function isempty:boolean;
begin
if first=last then isempty:=true
else isempty:=false;
end;
procedure solv;
begin
while not isempty do
begin
qout(numar);
numar1:=numar*10;
numar2:=numar*10+1;
if rest[numar1 mod M]<>'.' then
begin
rst:=numar1 mod M;
qin(rst);
up[last-1]:=first-1;
cif[last-1]:=0;
rest[rst]:='.'; end;
if (numar1 mod M)=0 then exit;
if rest[numar2 mod M]<>'.' then
begin
rst:=numar2 mod M;
qin(rst);
up[last-1]:=first-1;
cif[last-1]:=1;
rest[rst]:='.'; end;
if (numar2 mod M=0) then exit;
end;
end;
function ggt(a,b:longint):longint;
begin
while a<>b do
if a>b then a:=a-b
else b:=b-a;
ggt:=a;
end;
function kgv(a,b:longint):longint;
begin
kgv:=a*b div ggt(a,b);
end;
procedure print(i:longint);
begin
if i<>1 then
begin
print(up[i]);
write(fo,cif[i]);
end;
end;
begin
assign(fi,'multiplu.in'); reset(fi);
assign(fo,'multiplu.out'); rewrite(fo);
read(fi,a,b);
M:=kgv(a,b);
first:=1; last:=1;
qin(1); rest[1]:='.';
solv;
write(fo,'1');
last:=last-1;
print(last);
close(fi);
close(fo);
end.