Cod sursa(job #248813)

Utilizator valytgjiu91stancu vlad valytgjiu91 Data 26 ianuarie 2009 21:10:17
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.22 kb
 const p5:array[1..13] of longint=
        (5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125, 9765625, 48828125, 244140625, 1220703125);
  var
     p:longint;
  { fara    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<=13) 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;
      { aici }
       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)=k do
                                m:=m-1;
                              write(g,m+1);
                            ok:=True;
                         end
                        else if k>p then j:=m-1
                                    else i:=m+1;
       end;
      { aici }
     if i>j then write(g,'-1');
   end;
  close(g);
  end.