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