function Multi(N1,N2:String):string;
Var
Ma1, Ma2 : array [1..20] of integer;
Ans : array [1..40] of integer;
sum, mult,q:Integer;
N1sign,N2sign: boolean;
begin
N1sign:=false; N2sign:=false;
for q:=1 to length(n1) do
if ord(n1[q]) in [128..137] then n1[q]:=chr(ord(n1[q]&# 41;-80);
for q:=1 to length(n2) do
if ord(n2[q]) in [128..137] then n2[q]:=chr(ord(n2[q]&# 41;-80);
if (length(n1)>20) or (length(n2)>20) then
begin Multi:='0' ; exit end;
if (pos('/',N1)<>0)or(pos('.',N1)< >0)or(pos('/',N2)<>0)or(pos('.',N2)< >0) then
begin Multi:='0' ; exit end;
if n1[1]='+' then delete(n1,1,1)
else if n1[1]='-' then begin delete(n1,1,1) ; N1sign:=true end;
if n2[1]='+' then delete(n2,1,1)
else if n2[1]='-' then begin delete(n2,1,1) ; N2sign:=true end;
for q:=1 to 20 do
if n1[1]='0' then delete(n1,1,1)
else q:=20;
for q:=1 to 20 do
if n2[1]='0' then delete(n2,1,1)
else q:=20;
For I:=1 to 20 do begin Ma1[i]:=0; Ma2[i]:=0; end;
For I:=1 to 40 do begin Ans[i]:=0; end;
Mult:=0;Sum:=0;
for i := 1 to length(N1) do
Ma1 [ i] := ord(N1[length(N1) - i + 1]) - ord( '0' );
for i := 1 to length(N2) do
Ma2 [ i] := ord(N2[length(N2) - i + 1]) - ord ( '0' );
for i := 1 to length(N2) do
for j := 1 to length(N1) do
begin
mult := Ma2[ i] * Ma1[ j];
sum := Ans[ i + j -1] + mult mod 10;
Ans [ i + j -1 ] := sum mod 10;
Ans [ i +j ] := (sum div 10 + Ans [ i + j ] + mult div 10 );
for k := i + j + 1 to length(N1)+length(N2) do
begin
Ans [ k] := Ans [ k] + Ans [ k - 1] div 10;
Ans [ k -1] := Ans [ k - 1] mod 10;
end;
end;
i := length(N1) + length(N2);
N1:=''; N2:='';
while i<>0 do
begin
Str(Ans[i],N2);
N1:=N1+N2; dec(i);
end;
If N1Sign Xor N2Sign then
Insert ('-',N1,1);
If N1[1]='0' then Delete(N1,1,1);
Multi:=N1;
end; { Multiply}