Cod sursa(job #136962)

Utilizator eugen.nodeaEugen Nodea eugen.nodea Data 16 februarie 2008 17:58:16
Problema Factorial Scor 40
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.21 kb
const p5:array[1..13] of longint=
      (5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125);
var
   p:longint;
   x:longint;
   i,k,j,m:longint;
   ok:boolean;
   f,g:text;
Function n0(x:longint):longint;
var k,I:longint;
begin
     k:=0;
     i:=1;
     while (x/p5[i]>=1.0) and (i<=10) do
     begin
         k:=k+ x div p5[i];
         i:=i+1;
     end;
    n0:=k;
end;
begin
     assign(f,'fact.in'); reset(f);
     readln(f,p);
     close(f);
     assign(g,'fact.out'); rewrite(g);
     if p=0 then write(g,'1')
     else
         begin
              ok:=False;
              i:=p; j:=MaxLongInt;
              while Not ok And (i<=j) do
              begin
                   m:=(i+j) Div 2;
                   k:=n0(m);
                   if k=p then begin
                            while n0(m)=p do
                                  m:=m-1;
                            write(g,m+1);
                            ok:=True;
                       end
                      else if k>p then j:=m-1
                                  else i:=m+1;
              end;
              if i>j then write(g,'-1');
         end;
         close(g);
End.