Cod sursa(job #164877)
Utilizator | Data | 24 martie 2008 21:51:18 | |
---|---|---|---|
Problema | Factorial | Scor | 100 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.32 kb |
var p,a,b,m:longint;
q:boolean;
g:text;
function f(n:longint):longint;
var p:longint;
begin
p:=0;
while n>0 do
begin
p:=p+(n div 5);
n:=n div 5;
end;
f:=p;
end;
begin
assign(g,'fact.in'); reset(g);
readln(g,p);
close(g);
assign(g,'fact.out'); rewrite(g);
if p=0 then writeln(g,1)
else begin
a:=1;
b:=500000000;
q:=false;
while (a<=b) and (not(q)) do
begin
m:=(a+b) div 2;
if f(m)=p then begin
while f(m)=p do m:=m-1;
writeln(g,m+1);
q:=true;
end
else
if f(m)<p then a:=m+1
else b:=m-1;
end;
if not(q) then writeln(g,-1);
end;
close(g);
end.