Cod sursa(job #274841)

Utilizator DarkByteVictor Pop DarkByte Data 10 martie 2009 00:06:22
Problema Factorial Scor 15
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.98 kb
var P : longint;
    f : textfile;

function CountFactZero(N : int64) : int64;
var i : int64;
begin
  i := 0;
  while N > 0 do
    begin
      n := n div 5;
      inc(i, N);
    end;
  inc(i, N);  
  CountFactZero := i;
end;

function CautaBinar(P, s, f : int64) : integer;
var z, mid : int64;
    rez : integer;
begin
  if s >= f
    then CautaBinar := -1;
  mid := (s+f) div 2;
  z := CountFactZero(mid);
  if z = -1 then
    begin
      CautaBinar := -1;
      exit;
    end;

  if z = p then
    begin
      rez := mid;
      while CountFactZero(rez-1) = p do
        dec(rez);
      CautaBinar := rez;  
      Exit;
    end;

  if z < P
    then CautaBinar := CautaBinar(P, mid, f)
    else CautaBinar := CautaBinar(P, s, mid - 1);
end;

begin
  Assign(f, 'fact.in');
  Reset(f);
  Read(f, P);
  Close(f);

  Assign(f, 'fact.out');
  Rewrite(f);
  if P = 0
    then Write(f, '1')
    else Write(f, CautaBinar(P, 1, 450000000));
  Close(f);
end.