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ừ

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

0 bình luận về “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ừ”

  1. 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.

    Bình luận

Viết một bình luận