Cod sursa(job #115207)

Utilizator h_istvanHevele Istvan h_istvan Data 16 decembrie 2007 11:35:10
Problema Multiplu Scor 10
Compilator fpc Status done
Runda preONI 2008, Runda 2, Clasele 11-12 Marime 1.75 kb
program multiplu;
const maxjegy = 1000;
type szam = array[0..maxjegy] of word;
var f:text;
    a,b,t,i:longint;
    e,tsz:szam;

procedure alakit(var sz:szam;x:longint);
var i:word;
begin
     i:=maxjegy;
     while(x>0) do
     begin
          sz[i]:=x mod 10;
          x:=x div 10;
          i:=i-1;
     end;
     sz[0]:=i+1;
end;

procedure osszead(sz1,sz2:szam;var e:szam);
var i,t:word;
begin
     t:=0;
     i:=maxjegy;
     while (i>=sz1[0]) or (i>=sz2[0]) or (sz1[i]+sz2[i]+t>0) do
     begin
          e[i]:=(sz1[i]+sz2[i]+t) mod 10;
          t:=(sz1[i]+sz2[i]+t) div 10;
          i:=i-1;
     end;
     e[0]:=i+1;
end;

function lkkt(szam1,szam2:longint):longint;
var m,sz1,sz2,lnko:longint;
begin
     sz1:=szam1;
     sz2:=szam2;
     while m<>0 do
     begin
          m:=sz1 mod sz2;
          sz1:=sz2;
          sz2:=m;
     end;
     lnko:=sz1;
     lkkt:=(szam1*szam2) div lnko;
end;

{function ellenoriz(x:longint):boolean;
var control:boolean;
begin
     control:=true;
     while(control) and (x>0) do
     begin
          if(x mod 10) > 1 then control:=false;
          x:=x div 10;
     end;
     ellenoriz:=control;
end;}
function ellenoriz(var x:szam):boolean;
var i:word;
begin
     ellenoriz:=true;
     for i:=x[0] to maxjegy do
         if(x[i] > 1) then
         begin
              ellenoriz:=false;
              break;
         end;
end;

begin
     assign(f,'multiplu.in');
     reset(f);
     readln(f,a,b);
     close(f);

     t:=lkkt(a,b);
     alakit(e,t);
     alakit(tsz,t);
     while not(ellenoriz(e)) do osszead(e,tsz,e);

     assign(f,'multiplu.out');
     rewrite(f);
     for i:=e[0] to maxjegy do write(f,e[i]);
     writeln(f);
     close(f);
end.