Cod sursa(job #363568)

Utilizator arnold23Arnold Tempfli arnold23 Data 13 noiembrie 2009 19:27:46
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.84 kb
var f:text;
    p,b,e,m,k:longint;
    ok:boolean;

function nrz(n:longint):longint;
var q:longint;
begin
   q:=0;
   while n<>0 do begin
      q:=q+n div 5;
      n:=n div 5;
   end;
   nrz:=q;
end;

begin
 assign(f,'fact.in');
 reset(f);
 readln(f,p);
 close(f);

 if p=0 then begin
   assign(f,'fact.out');
   rewrite(f);
   writeln(f,'1');
   close(f);
 end else
 if p<5 then begin
   assign(f,'fact.out');
   rewrite(f);
   writeln(f,p*5);
   close(f);
 end else begin
   b:=1;
   e:=maxlongint-1;
   ok:=true;
   while ok do begin
      m:=(b div 2)+(e div 2);
      k:=nrz(m);
      if (k=p) or (b=e) then ok:=false
      else if k>p then e:=m-1
      else b:=m+1;
   end;
   if k<>p then m:=-1 else
    m:=m-m mod 5;
   assign(f,'fact.out');
   rewrite(f);
   writeln(f,m);
   close(f);
 end;
end.