Nu aveti permisiuni pentru a descarca fisierul grader_test12.ok
Cod sursa(job #363076)
Utilizator | Data | 11 noiembrie 2009 19:18:13 | |
---|---|---|---|
Problema | Factorial | Scor | 45 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.04 kb |
var f:text;
p,n,b,e,m,k:longint;
ok:boolean;
function nrz(n:longint):longint;
var q:longint;
begin
q:=0;
while n>0 do begin
q:=q+n div 5;
n:=n div 5;
end;
nrz:=q;
end;
begin
assign(f,'fact.in');
reset(f);
readln(f,p);
close(f);
if p=0 then begin
assign(f,'fact.out');
rewrite(f);
writeln(f,'1');
close(f);
end else
if p<5 then begin
assign(f,'fact.out');
rewrite(f);
writeln(f,p*5);
close(f);
end else begin
b:=1;
e:=maxlongint-1;
ok:=true;
while ok do begin
m:=(b div 2)+(e div 2);
k:=nrz(m);
if (k=p) or (b=e) then ok:=false
else if k>p then e:=m-1
else b:=m+1;
end;
if k<>p then m:=-1 else
if m mod 5 <> 0 then begin
ok:=true;
b:=1;
while ok do begin
if (m+b) mod 5 = 0 then begin m:=m+b; ok:=false; end else
if (m-b) mod 5 = 0 then begin m:=m-b; ok:=false; end else inc(b);
end;
end;
assign(f,'fact.out');
rewrite(f);
writeln(f,m);
close(f);
end;
end.