Cod sursa(job #248613)

Utilizator andreyusschiopu andrei andreyus Data 26 ianuarie 2009 10:44:28
Problema A+B Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.48 kb
var f,g:text;
n1,n2:longint;
vn1,vn2:array[1..1000] of 0..9;
s:array[1..10000] of 0..9;
i,j,k,t:byte;
begin
assign(f,'suma.in');
reset(f);
read(f,n1,n2);
i:=0; {nr de cifre pt n1}
while n1<>0 do
begin
     inc(i);
     vn1[i]:=n1 mod 10;
     n1:=n1 div 10
end;
j:=0; {ne de cifre pt n2}
while n2<>0 do
begin
      inc(j);
      vn2[j]:=n2 mod 10;
      n2:=n2 div 10
end;
s[1]:=(vn1[1]+vn2[1]) mod 10;
t:=(vn1[1] +vn2[1]) div 10;

if i<j then
begin
       for k:=2 to i do
       begin
              s[k]:=(t+vn1[k]+vn2[k]) mod 10;
              t:=(t +vn1[k]+vn2[k]) div 10
       end;
      for k:=i+1 to j do
      begin
           s[k]:=(t+vn2[k]) mod 10;
           t:=(t+vn2[k]) div 10;
      end;
      if t<>0 then
      begin
         inc(k);
         s[k]:=t
      end
end
else
if i>j then
 begin
    for k:=2 to j do
    begin
          s[k]:=(t+vn1[k]+vn2[k]) mod 10;
          t:=(t+vn1[k]+vn2[k]) div 10
    end;
    for k:=j+1 to i do
    begin
        s[k]:=(t+vn1[k]) mod 10;
        t:=(t+vn1[k]) div 10
    end
      if t<>0 then
      begin
         inc(k);
         s[k]:=t
      end
 end
else
begin
    for k:=2 to j do
    begin
          s[k]:=(t+vn1[k]+vn2[k]) mod 10;
          t:=(t+vn1[k]+vn2[k]) div 10
    end;
      if t<>0 then
      begin
         inc(k);
         s[k]:=t
      end
   end

 assign(g,'suma.out');
 rewrite(g);
 for i:=k downto 1 do
       write(g,s[i]);
 close(f);
 close(g);
end.