Cod sursa(job #32902)

Utilizator QbyxEros Lorand Qbyx Data 18 martie 2007 18:02:12
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.78 kb
program factorial;
var
  p: longint;
  i, n: int64;
  f: text;

Function Nulla(x: int64): int64;
var o, r: int64;
begin
  o := 5; r := 0;

  While x div o <> 0 do
    begin
      r := r + x div o;
      o := o * 5;
    end;
  Nulla := r;
end;

Procedure BinKer(e, u: int64);
var akt, k: int64;
begin
  if e > u then n := -1
  else
    begin
      k := (e + u) div 2;
      akt := Nulla(k);
      if akt = p then n := k
      else
        if akt > p then BinKer(e,k - 1)
        else BinKer(k + 1, u);
    end;
end;

Begin
  Assign(f, 'fact.in');
  Reset(f);
  ReadLn(f, p);
  Close(f);

  BinKer(1,5000000000);
  if (n <> - 1) then while (Nulla(n - 1) = p) and (n > 1) do Dec(n);

  Assign(f, 'fact.out');
  ReWrite(f);
  WriteLn(f,n);
  Close(f);
end.