Имеется два числа длинной до 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 - ФОРУМ » Задачи по программированию » Задачи по длинной арифметике