Cod sursa(job #284771)

Utilizator andreivFMI - vacaroiu andrei andreiv Data 21 martie 2009 22:49:04
Problema Factorial Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.67 kb
program factorial;
var f,g:text;
    v:array[1..1000] of longint;
    x,q,st,dr,k,nr:longint;
    a:longint;
    ok:boolean;

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;ok:=true;
while ok do
begin
if dr=st+1 then begin if k<=4 then q:=k*5 else q:=-1; break; end else
begin
x:=(st+dr)div 2;
q:=0;
 while v[nr]*5<=x do begin nr:=nr+1;v[nr]:=v[nr-1]*5; end;
 for a:=1 to nr do
   q:=q+x div v[a];
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;
end;
writeln(g,q);
close(f);
close(g);
end.