Cod sursa(job #564241)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 26 martie 2011 22:56:53
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.65 kb
const put=12;
      p:array[1..put] of int64=(5,25,125,625,3125,15625,78125,390625,1953125,9765625,48828125,244140625);

var i, pp:longint;
    f, g:text;
    n, st, dr:int64;

function fact (x:int64):longint;
var t:longint;
  begin
  t:=0;
  for i := 1 to put do t:=t+(x div p[i]);
  fact:=t;
  end;

begin
assign (f, 'fact.in'); reset (f);
assign (g, 'fact.out'); rewrite (g);

readln (f, pp);
st:=1; dr:=400000016;
while st < dr do
  begin
  n:=(st+dr) div 2;
  if fact(n)<pp then st:=n+1
                else dr:=n;
  end;

if pp = fact (st) then writeln (g, st)
                  else writeln (g, '-1');

close (f); close (g);
end.