Cod sursa(job #554364)

Utilizator C0Mr4d3yonootz321 C0Mr4d3 Data 14 martie 2011 19:52:03
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.95 kb
program factorial;
const put5:array[1..12] of longint = (5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625);
var p,n:longint;
    f:text;

function nr_zerouri(n:longint):longint;
var i:byte;
    nr:longint;
begin
  nr:=0;
  for i:=1 to 12 do
    nr := nr + n div put5[i];
  nr_zerouri:=nr;
end;

function cauta(li,ls:longint):longint;
var m,nrz:longint;
begin
  if li>ls then
    cauta := -1
  else
    begin
      m:=(li+ls) div 2;
      nrz:=nr_zerouri(m);
      if p = nrz then
        cauta := m
      else
        if p < nrz then
          cauta := cauta(li,m-1)
        else
          cauta := cauta(m+1,ls);
    end;
end;

begin
  assign(f,'fact.in');
  reset(f);
  readln(f,p);
  close(f);
  if p = 0 then
    n :=1
  else
    begin
      n := cauta(1,500000000);
      while nr_zerouri(n-1) = p do
        n:=n-1;
    end;
  assign(f,'fact.out');
  rewrite(f);
  writeln(f,n);
  close(f);
end.