Cod sursa(job #71803)

Utilizator adrianraduleaRadulea Adrian adrianradulea Data 11 iulie 2007 17:42:58
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.72 kb
var f,g:text;
    p,n,m,cifra,nr,li,ls,ul:longint;
    ok:boolean;
begin
assign(f,'fact.in'); reset(f);
assign(g,'fact.out'); rewrite(g);
read(f,p);
n:=p*5;
ok:=false;
nr:=5;
while n div nr>0 do begin
    cifra:=cifra+n div nr;
    nr:=nr*5;
end;
ls:=n;
li:=n-(cifra-p)*5;
ok:=false;
nr:=5;
m:=(li+ls) div 2;
while (not ok) and (li<=ls) do begin
  m:=(li+ls) div 2;
  if m mod 5<>0 then m:=m-2;
  nr:=5;
  cifra:=0;
  while m div nr>0 do begin
    cifra:=cifra+m div nr;
    nr:=nr*5;
  end;
  if cifra=p then ok:=true
             else  if cifra>p then ls:=m+5 else li:=m-5;
  if cifra=ul then break;
  ul:=cifra;
end;
if p=0 then write(g,'1') else if ok then write(g,m) else write(g,'-1');
close(g);
end.