Имеется два числа длинной до 254 символов. Ваша программа должна выдать их сумму.
Люди обьясните, плиииззззз??? Как рещать???
Программирование на языке Pascal - ФОРУМ |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Программирование на языке Pascal - ФОРУМ » Задачи по программированию » Задачи по длинной арифметике
Имеется два числа длинной до 254 символов. Ваша программа должна выдать их сумму.
Люди обьясните, плиииззззз??? Как рещать???
Держи
const base=1000; {основание} var a,b,c:array[0..10000] of integer; //Массивы где хранятся числа (по 3 цифры в ячейке) procedure redln(var a:array of integer); //Процедура чтения чисел var ch:char; i:integer; begin fillchar(a,sizeof(a),0); repeat read(ch); until ch in ['0'..'9']; while ch in ['0'..'9'] do begin for i:=a[0] downto 1 do begin a[i+1]:=a[i+1]+(a[i]*10) div base; a[i]:=(a[i]*10) mod base; end; a[1]:=a[1]+ord(ch)-48; if a[a[0]+1]>0 then inc(a[0]); read(ch); end; end; procedure wrt(a:array of integer); //Процедура вывода ответа var s:string; i:integer; begin write (a[a[0]]); for i:=a[0]-1 downto 1 do begin str(a[i],s); while length(s)<3 do s:='0'+s; write(s); end; writeln; end; procedure sum(a,b:array of integer; var c:array of integer); //сама сумма 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 base; c[i]:=(c[i]+a[i]+b[i]) mod base; end; if c[k+1]=0 then c[0]:=k else c[0]:=k+1; end; begin redln(a); redln(b); sum(a,b,c); wrt(c); end.
Если нужны пояснения-пиши
Вы здесь » Программирование на языке Pascal - ФОРУМ » Задачи по программированию » Задачи по длинной арифметике