Cod sursa(job #37525)

Utilizator maria_pparcalabescu maria daniela maria_p Data 25 martie 2007 10:43:25
Problema Next Scor 40
Compilator fpc Status done
Runda preONI 2007, Runda 4, Clasa a 9-a si gimnaziu Marime 1.78 kb
var f,g:text;
    a,b,c:array[0..1000000]of integer;
    i:longint;
    d,t:qword;
    e:integer;
    ch:char;

procedure impartire;
begin
t:=0;i:=a[0];
while i>0 do
      begin
      t:=t*10+a[i];
      b[i]:=t div d;
      t:=t mod d;
      i:=i-1;
      end;
b[0]:=a[0];
while (b[0]>0)and(b[b[0]]=0)do dec(b[0]);
end;

procedure inmultire;
begin
t:=0;i:=1;
while (i<=b[0])or(t>0)do
      begin
      t:=t+b[i]*d;
      b[i]:=t mod 10;
      t:=t div 10;
      inc(i);
      end;
b[0]:=i-1;
end;

procedure scadere;
begin
t:=0;i:=1;
while (i<=a[0])or(t>0)do
      begin
      b[i]:=a[i]-b[i]-t;
      if b[i]<0 then t:=1
                else t:=0;
      b[i]:=b[i]+t*10;
      inc(i);
      end;
while (b[0]>0)and(b[b[0]]=0)do dec(b[0]);
end;

procedure scadere1;
begin
t:=0;i:=1;
while (i<=c[0])or(t>0)do
      begin
      b[i]:=c[i]-b[i]-t;
      if b[i]<0 then t:=1
                else t:=0;
      b[i]:=b[i]+t*10;
      inc(i);
      end;
while (b[0]>0)and(b[b[0]]=0)do dec(b[0]);
end;

procedure adunare;
begin
t:=0;i:=1;
while(i<=a[0])or(i<=b[0])or(t>0)do
     begin
     t:=t+a[i]+b[i];
     a[i]:=t mod 10;
     t:=t div 10;
     inc(i);
     end;
a[0]:=i-1;
end;

begin
assign(f,'next.in');reset(f);
assign(g,'next.out');rewrite(g);
while not eoln(f) do
      begin
      inc(a[0]);
      read(f,ch);
      val(ch,a[a[0]],e);
      end;
for i:=1 to a[0] div 2 do
    begin
    e:=a[i];
    a[i]:=a[a[0]-i+1];
    a[a[0]-i+1]:=e;
    end;
readln(f);
readln(f,d);
impartire;
inmultire;
scadere;
while d<>0 do
      begin
      inc(c[0]);
      c[c[0]]:=d mod 10;
      d:=d div 10;
      end;
scadere1;
if b[0]>0 then adunare;
for i:=a[0] downto 1 do
    write(g,a[i]);
writeln(g);
close(f);
close(g);
end.