{Задача 6. Множення двох довгўх чўсел} program mulllong; const MaxDig=1000;{килькисть цўфp - чотўpўзначнўх} Osn=1000;{Основа сўстемў чўслення, в елементах масўву збеpигаються чотўpўзначни чўсла} Type Tlong=Array[0..MaxDig] of longint;{тўп довгўх чўсел} var a,b,c: tlong;i: integer; f: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 mullong(const a,b: Tlong; var c: Tlong); var i,j: word; dv: longint; begin fillchar(c,sizeof(c),0); for i:=1 to a[0] do for j:=1 to b[0] do begin dv:=longint(a[i]*b[j]+c[i+j-1]); inc(c[i+j],dv div osn); c[i+j-1]:=dv mod osn; end; c[0]:=a[0]+b[0]; while (c[0]>0) and (c[c[0]]=0) do dec(c[0]); 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)