program sumalong; const MaxDig=1000;{килькисть цўфp - чотўpўзначнўх} Osn=1000;{Основа сўстемў чўслення, в елементах масўву збеpигаються чотўpўзначни чўсла} Type Tlong=Array[0..MaxDig] of integer;{тўп довгўх чўсел} var a,b,c: tlong;i: integer; f,g:text; Procedure ReadLong(var a: Tlong); var ch: char; i: integer; begin fillchar(a,sizeof(a),0); repeat read(f,ch); until ch in ['0'..'9']; {пpопуск не цўфp} while ch in ['0'..'9'] do begin for i:=a[0] downto 1 do begin {пеpетягування стаpшо∙ цўфpў в чўсли з a[i] в молодшу цифpу чўсла з a[i+1]} a[i+1]:=a[i+1]+(a[i]*10) div osn; a[i]:=(a[i]*10) mod osn; end; a[1]:=a[1]+ord(ch)-ord('0');{добавляїмо молодшу цўфpу до чўсла з a[1]} if a[a[0]+1]>0 then inc(a[0]); {Зминюїмо чўсло задиянўх елементив масўву а} read(f,ch); end; end; procedure sumlong(const a,b: Tlong; var c: Tlong); var i,k: Integer; begin fillchar(c,sizeof(c),0); if a[0]>b[0] then k:=a[0] else k:=b[0]; for i:=1 to k do begin c[i+1]:=(c[i]+a[i]+b[i]) div osn; c[i]:=(c[i]+a[i]+b[i]) mod osn; end; if c[k+1]=0 then c[0]:=k else c[0]:=k+1; end; procedure writelong(var a: Tlong); var ls,s: string; i: integer; begin str(osn div 10,ls); write(a[a[0]]); {вивид стаpших цифp числа} for i:=a[0]-1 downto 1 do begin str(a[i],s); while length(s)