Pagini recente » Cod sursa (job #2839078) | Cod sursa (job #1833344) | Cod sursa (job #2938993) | Cod sursa (job #2495229) | Cod sursa (job #284628)
Cod sursa(job #284628)
program factorial;
var f,g:text;
v:array[1..1000] of int64;
x,q,st,dr,k,nr:int64;
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.