Cộng hai số nguyên lớn Cho hai số nguyên A và B (có số chữ số ≤ $10^{5}$). Hãy tính tổng của A và B. Ví dụ: A= 12, B = 34. Tổng là 46. Dữ liệu: Vào từ file văn bản BIGNUM.INP • Dòng đầu ghi số A, • Dòng thứ hai ghi số B Kết quả: Ghi ra file văn bản BIGNUM.OUT gồm 1 dòng duy nhất ghi tổng A+B Ví dụ: BIGNUM.INP BIGNUM.OUT 99912 1099846 999934
1 câu trả lời
const fi='bignum.inp';
fo='bignum.out';
maxn=round(1e5)+1;
type bignum = array [0..maxn] of longint;
var xs,ys:ansistring;
x,y,z:bignum;
i,j,dem,max:longint;
begin
assign(input,fi);
reset(input);
readln(xs);
readln(ys);
fillchar(x,sizeof(x),0);
fillchar(y,sizeof(y),0);
fillchar(z,sizeof(z),0);
x[0]:=length(xs);
y[0]:=length(ys);
for i:=x[0] downto 1 do
begin x[x[0]-i+1]:= ord(xs[i])-48; end;
for j:=y[0] downto 1 do
begin y[y[0]-j+1]:= ord(ys[j])-48; end;
close(input);
dem:=0;
if x[0] > y[0] then max:= x[0] else max:=y[0];
for i:=1 to max do
begin
z[i]:=(x[i]+y[i]+dem) mod 10;
dem:=(x[i]+y[i]+dem) div 10;
end;
if dem >0 then
begin
inc(z[0]);
z[z[0]]:=dem;
end;
assign(output,fo);
rewrite(output);
for i:=max downto 1 do
write(z[i]);
close(output);
end.