Cod sursa(job #601510)

Utilizator DarkWishMasterCebotari Vlad DarkWishMaster Data 6 iulie 2011 20:40:34
Problema Factorial Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.82 kb
var a:array[1..20] of int64;
    P:int64; N,K,r:longint; i:byte; F:text;
 function CheckZero(N:longint):longint;
  var r:int64; i:byte;
   begin
    i:=1;
     r:=0;
     while a[i]<=N do
      begin
      r:=r+N div a[i];
      inc(i);
     end;
    CheckZero:=r;
  end;
Begin
a[1]:=5;
N:=0;
assign(F, 'fact.in');
reset(F);
read(F, P);
close(F);
for i:=2 to 20 do
  a[i]:=a[i-1]*5;
K:=0;
r:=0;
if P>10 then
 while K<P do begin
  N:=N+5*((P-K) div 10);
  if N=r then N:=n+5
   else r:=N;
 K:=CheckZero(N);
end
 else
  while K<P do begin
   N:=N+5;
   K:=CheckZero(N);
  end;
 k:=0;
 if n>5 then
   for i:=1 to 5 do
    if CheckZero(N-i)=P then k:=i;
  n:=n-k;
  if CheckZero(N)<>P then N:=-1;
  if P=0 then N:=1;
  assign(F, 'fact.out');
rewrite(F);
writeln(N);
write(F, N);
close(F);
end.