Cod sursa(job #1556543)

Utilizator cretu_cipriancretu ciprian cretu_ciprian Data 25 decembrie 2015 11:09:20
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.9 kb
program infoarena_factorial;
var p,n,a,b,z:int64;
   f:text;
   gata:boolean;
   function zero(k:int64):int64;
   var p,s:int64;
   begin       p:=5;  s:=0;
     while (k div p>=1) do begin
       s:=s+(k div p);
          p:=p*5;
 end;  zero:=s;
   end;

begin

 assign(f,'fact.in');reset(f);readln(f,p);close(f);
  assign(f,'fact.out');rewrite(f);
  if p=0 then begin n:=1;write(f,n);close(f);end
  else begin
     a:=1;b:=1000000000;
n:=((a+b) div 2);z:=zero(n);
 gata:=z=p;
  while not gata do
begin    z:=zero(n);
  if z<p then begin a:=((a+b) div 2)+1;n:=((a+b) div 2);gata:=false;end
  else if z>p then begin b:=((a+b) div 2)-1;n:=((a+b) div 2);gata:=false;end
  else gata:=true;
  if (a=b) and (not gata) then begin  n:=-1;write(f,n);close(f); halt; end;
end;
   if z=p then begin n:=(n div 5)*5;write(f,n);close(f); end
   else begin n:=-1;write(f,n);close(f); end;
end;
end.