code 31200;
procedure LNG INT ADD(U,V,SUM); integer array U,V,SUM;
begin integer LU,LV,DIFF,CARRY,I,T,MAX;
LU:=U[0]; LV:=V[0];
if LU >= LV then
begin MAX:=LU; DIFF:=LU - LV + 1; CARRY:=0;
for I:=LU step -1 until DIFF do
begin T:=U[I] + V[I-DIFF+1] + CARRY;
CARRY:=if T<10 000 000 then 0 else 1;
SUM[I]:=T - CARRY * 10 000 000
end;
for I:=DIFF - 1 step -1 until 1 do
begin T:=U[I] + CARRY;
CARRY:=if T<10 000 000 then 0 else 1;
SUM[I]:=T - CARRY * 10 000 000
end
end else
begin MAX:=LV; DIFF:=LV - LU + 1; CARRY:=0;
for I:=LV step -1 until DIFF do
begin T:=V[I] + U[I-DIFF+1] + CARRY;
CARRY:=if T<10 000 000 then 0 else 1;
SUM[I]:=T - CARRY * 10 000 000
end;
for I:=DIFF - 1 step -1 until 1 do
begin T:=V[I] + CARRY;
CARRY:=if T<10 000 000 then 0 else 1;
SUM[I]:=T - CARRY * 10 000 000
end
end;
if CARRY=1 then
begin for I:=MAX step -1 until 1 do
SUM[I+1]:=SUM[I]; SUM[1]:=1; MAX:=MAX + 1
end;
SUM[0]:=MAX
end LNG INT ADD
eop