Cod sursa(job #250657)

Utilizator dyzzy_dyzzyStanciulescu Daniel dyzzy_dyzzy Data 31 ianuarie 2009 14:33:10
Problema Factorial Scor 35
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.98 kb
const fin='fact.in';
      fout='fact.out';
var p,pnou,plo:longint;
    n,li,lo:int64;
    f,g:text;


function calculare(n:int64):longint;
var nr0:longint;
begin
nr0:=0;
while n div 5<>0 do
begin
  nr0:=nr0+n div 5;
  n:=n div 5;
end;
calculare:=nr0;
end;

procedure binar(li,lo:int64);
var mij:int64;
    begin
if li=lo then begin
   if p=calculare(li) then
        n:=li
   else
       n:=-1;
   exit;

   end
else begin
  if (li+lo) mod 2=0 then
     mij:=(li+lo) div 2
  else
    mij:=(li+lo) div 2 - 2;
  pnou:=calculare(mij);
  if p=pnou then begin
    n:=mij;
    exit;
  end;
  if p<pnou then
    binar(li,mij)
  else binar(mij+1,lo);
end;
end;

begin
assign(f,fin);
assign(g,fout);
reset(f);
readln(f,p);
close(f);

if p=0 then
  n:=1
else begin
  li:=5;
  lo:=25;
  plo:=6;
  while plo<=p do
  begin
     li:=lo;
     lo:=lo*5;
     plo:=plo+lo div 5;
  end;
  binar(li,lo);
end;
rewrite(g);
writeln(g,n);
close(g);
end.