uses crt;
var d:text; i,p,q,t,nho,a1,b1,e:longint; a,b,k:string; c:char;
kq:array[1..30000]of longint;
begin
clrscr;
assign(d,'input.pas');reset(D);
readln(d,p);
while not(eoln(d)) do begin read(d,c); if c<>' ' then a:=c+a; end;
readln(d);
readln(d,q);
while not(eoln(d)) do begin read(d,c); if c<>' ' then b:=c+b; end;
close(D);
assign(d,'output.pas');rewrite(D);
if p<q then
begin k:=a; a:=b;
b:=k;
for i:=1 to 30000 do b:=b+'0';
t:=p; p:=q; q:=t; end;
for i:=1 to p do
begin
a1:=0; b1:=0;
val(a[i],a1,e);
val(b[i],b1,e);
kq[i]:=a1+b1+nho;
if kq[i]>=10 then begin nho:=1; kq[i]:=kq[i] mod 10; end else nho:=0;
end;
if nho=1 then begin inc(p); kq[p]:=1; end;
writeln(d,p);
for i:=p downto 1 do write(d,kq[i],' ');
close(d);
end.
//////////////////////////////////
Giải thích:
Áp dụng qui tắc cộng hồi lớp 3 là:
Vd 1+13 thì sẽ là
13
+
1
Số 1 lui về sau vì đó nên chỗ đọc mình đã đảo ngược số đó
Rồi đạt a là số dài nhất
Rồi đạt b là số ngắn nhất
thành
31
+
1
Tới chỗ tính:
Cộng thì phai có nhớ nên mình tạo biến nhớ
mình cộng hai số thẳng cột.
Nếu tổng lớn hơn 10 thì lấy số sau rồi nhớ = 1 ko thì bằng 0
Khi đọ th
Một số text để bạn tham khảo nè: