Cod sursa(job #172097)
program meniu;
var a,b,c,d:array[0..20]of byte;
opt,k,p,aux,i,j:byte;
n,m:longint;
t:integer;
f,g:text;
begin
assign(f,'adunare.in'); assign(g,'adunare.out');
reset(f); rewrite(g);
readln(f,n);
readln(f,m);
while n>0 do
begin
k:=k+1; a[k]:=n mod 10; n:=n div 10;
end;
while m>0 do
begin
p:=p+1; b[p]:=m mod 10; m:=m div 10;
end;
for i:=1 to (k div 2) do
begin
aux:=a[i]; a[i]:=a[k-i+1]; a[k-i+1]:=aux;
end;
for i:=1 to (p div 2) do
begin
aux:=b[i]; b[i]:=b[p-i+1]; b[p-i+1]:=aux;
end;
t:=0;
if k>p then
begin
for i:=1 to (k-p) do
d[i]:=0;
j:=0;
for i:=(k-p+1) to k do
begin
j:=j+1; d[i]:=b[j];
end;
for i:=k downto 1 do
begin
a[i]:=a[i]+t;
if (a[i]+d[i])>9 then
begin
c[i]:=(a[i]+d[i]) mod 10;
t:=1;
end
else
begin
c[i]:=a[i]+d[i];
t:=0;
end;
end;
for i:=1 to k do
write(g,c[i]);
end
else
if p>k then
begin
for i:=1 to (p-k) do
d[i]:=0;
j:=0;
for i:=(p-k+1) to p do
begin
j:=j+1; d[i]:=a[j];
end;
for i:=p downto 1 do
begin
b[i]:=b[i]+t;
if (b[i]+d[i])>9 then
begin
c[i]:=(b[i]+d[i]) mod 10;
t:=1;
end
else
begin
c[i]:=b[i]+d[i];
t:=0;
end;
end;
for i:=1 to p do
write(g,c[i]);
end
else
if k=p then
begin
for i:=k downto 1 do
begin
a[i]:=a[i]+t;
if (a[i]+b[i])>9 then
begin
c[i]:=(a[i]+b[i]) mod 10;
t:=1;
end
else
begin
c[i]:=b[i]+a[i];
t:=0;
end;
end;
if t=1 then
c[0]:=t;
for i:=0 to p do
write(g,c[i]);
end;
close(f); close(g);
end.