Для выполнения операций с «длинными» числами их нужно ввести в компьютер. Часто данные считывают как строки. В данном примере число считывается «поцифренно». Ввод числа заканчивается нажатием на Enter или по достижению максимальной длины числа.
const Count=10000; var c: char; a, b, o: array[1..Count+1] of byte; na, nb, i, l, x: longint; begin repeat read(c); if c in ['0'..'9'] then begin inc(na); a[na] := ord(c) - 48; end; until (c = #13) or (na = Count); {-----------------------------------------------------------------------------------------} repeat read(c); if c in ['0'..'9'] then begin inc(nb); b[nb] := ord(c) - 48; end; until (c = #13) or (nb = Count); if na > nb then l := na else l := nb; if (na > nb) then l := na else l := nb; {==========================================================================================} for i := 1 to na div 2 do begin x := a[i]; a[i] := a[na - i + 1]; a[na - i + 1] := x; end; for i := 1 to nb div 2 do begin x := b[i]; b[i] := b[nb - i + 1]; b[nb - i + 1] := x; end; {==========================================================================================} for i := 1 to l do begin o[i] := o[i] + a[i] + b[i]; if (o[i] > 9) then begin o[i + 1] := trunc(o[i] / 10); o[i] := o[i] mod 10; end; end; if (o[l+1] > 0) then inc(l); for i := l downto 1 do write(o[i]); writeln; end.