Cod sursa(job #284619)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 21 martie 2009 20:38:15
Problema Factorial Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.71 kb
program factorial;
var f,g:text;
    v:array[1..1000] of int64;
    q,st,dr,k,nr:int64;

 function val(x:int64):int64;
 var  a:longint;
      s:int64;
 begin
 s:=0;
 while v[nr]*5<=x do begin nr:=nr+1;v[nr]:=v[nr-1]*5; end;
 for a:=1 to nr do
   s:=s+x div v[a];
 val:=s;
 end;


begin
assign(f,'factorial.in');
assign(g,'factorial.out');
reset(f);
rewrite(g);
read(f,k);
st:=0;dr:=k*5;nr:=1;v[nr]:=5;
repeat
if dr=st+1 then begin if k<=4 then q:=k*5 else q:=-1; break; end else
begin
q:=val((st+dr) div 2);
if q=k then begin q:=(((st+dr) div 2)div 5)* 5; break end else
if k<q then dr:=(st+dr) div 2 else
if k>q then st:=(st+dr) div 2;
end;
until 1<0;
writeln(g,q);
close(f);
close(g);
end.