Cod sursa(job #38990)

Utilizator andrewgPestele cel Mare andrewg Data 26 martie 2007 12:34:59
Problema Next Scor 60
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.11 kb
const maxn = 1000001;

type huge = array[0..maxn]of longint;

var f:text;
    n:huge;
    i,j,x:longint;
    c:char;
    d,r:int64;

procedure readdata;
begin
   assign(f,'next.in');
   reset(f);
   n[0]:=0;
   while not eoln(f) do
   begin
      read(f,c);
      inc(n[0]);
      n[n[0]]:=ord(c)-48;
   end;
   readln(f,d);
   close(f);
end;

procedure modul;
begin
   for i:=n[0] downto 1 do
   begin
      r:=(10*r+n[i]) mod d;
   end;
end;

procedure add;
begin
   r:=0;
   for i:=1 to n[0] do
   begin
      x:=n[i]+(j mod 10)+r;
      n[i]:=x mod 10;
      r:=x div 10;
      j:=j div 10;
   end;
   if r=1 then
   begin
      inc(n[0]);
      n[n[0]]:=1;
   end;
end;

procedure solve;
begin
   for i:=1 to n[0] div 2 do
   begin
      j:=n[i];
      n[i]:=n[n[0]-i+1];
      n[n[0]-i+1]:=j;
   end;
   modul;
   if r=0 then exit;
   j:=d-r;
   add;
end;

procedure writedata;
begin
   assign(f,'next.out');
   rewrite(f);
   for i:=n[0] downto 1 do
   begin
      write(f,n[i]);
   end;
   close(f);
end;

begin
   readdata;
   solve;
   writedata;
end.