Cod sursa(job #274830)

Utilizator DarkByteVictor Pop DarkByte Data 9 martie 2009 23:55:25
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
      inc(i, N div 5);
      n := n div 5;
    end;
  CountFactZero := i;
end;

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

  if z = p then
    begin
      rez := (s+f) div 2;
      while CountFactZero(rez-1) = p do
        dec(rez);
      CautaBinar := rez;  
      exit;
    end;

  if z < P
    then CautaBinar := CautaBinar(P, (s + f) div 2, f)
    else CautaBinar := CautaBinar(P, s, (s + f) div 2 - 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, 100000000000));
  Close(f);
end.