Pagini recente » Cod sursa (job #666903) | Cod sursa (job #1252459) | Cod sursa (job #557778) | Cod sursa (job #997605) | Cod sursa (job #68423)
Cod sursa(job #68423)
Program Factorial;
const f : array[1..13] of longint=(5,25,125,625,3125,15625,78125,390625,
1953125,9765625,48828125,244140625,1220703125);
z : array[1..13] of longint=(1,6,31,156,781,3906,19531,97656,488281,
2441406,12207031,61035156,305175781);
{ f[i]=5^i; z[i] - cel mai mare numar natural pentru care f[i] mod z[i]=0 }
var P,N : longint;
procedure Citeste;
var Intrare : text;
begin
assign(Intrare,'fact.in');
reset(Intrare);
readln(Intrare,P);
close(Intrare);
end;
procedure Calculeaza;
var i : integer;
nz,cit : longint;
begin
if P=0 then N:=1
else
begin
N:=0;
nz:=P;
i:=13;
while nz>0 do
begin
cit:=nz div z[i];
if cit<5 then
begin
N:=N+cit*f[i];
nz:=nz mod z[i];
end
else
begin
N:=-1;
nz:=0;
end;
i:=i-1;
end;
end;
end;
procedure Scrie;
var Iesire : text;
begin
assign(Iesire,'fact.out');
rewrite(Iesire);
write(Iesire,N);
close(Iesire);
end;
begin
Citeste;
Calculeaza;
Scrie;
end.