Program p13_11;
uses crt;
type Vec=array[0..99]of integer;
var a:Vec;
    n,i:byte;

Function Min(a,b:integer):integer;
begin Min:=(a+b-abs(a-b))div 2;end;

Function Max(a,b:integer):integer;
begin Max:=(a+b+abs(a-b))div 2;end;

Function DivCom(a,b:integer):integer;
var r,i:integer;
begin
 r:=1;
 for i:=Min(a,b) downto 2 do if (a mod i=0)and(b mod i=0)and(r mod i<>0)then r:=r*i;
 DivCom:=r;
end;

Function MultCom(a,b:integer):integer;
var r,i:integer;
begin
 r:=Max(a,b); a:=Min(a,b);
 for i:=a downto 2 do if(a mod i=0)and(r mod i<>0)then r:=r div DivCom(r,i)*i;
 MultCom:=r;
end;

Function CMMDC(n:byte):Integer;
begin if n=1 then CMMDC:=DivCom(a[0],a[1])else CMMDC:=DivCom(CMMDC(n-1),a[n]);end;

Function CMMMC(n:byte):Integer;
begin if n=1 then CMMMC:=MultCom(a[0],a[1])else CMMMC:=MultCom(CMMMC(n-1),a[n]);end;

begin
clrscr;
writeln('Nr de vectori?');Readln(n);

For i:=0 to n-1 do begin
 Write('a[',i+1,']=');readln(a[i]);
end;
ClrScr;

For i:=0 to n-1 do Write('a[',i+1,']=',a[i],' ');
WriteLn;

WriteLn;
Writeln('a) CMMDC=',CMMDC(n-1));
WriteLn;
Writeln('b) CMMMC=',CMMMC(n-1));

readkey
end.

