usaco 3.2 fact4 2008.7.18
{
ID:
PROG: fact4
LANG: PASCAL
}
program p_fact4;
const fin='fact4.in';fout='fact4.out';
var n,sum,p,i,nn,n2,n5:longint;
f1,f2:text;
begin
assign(f1,fin);reset(f1);assign(f2,fout);rewrite(f2);
sum:=1;read(f1,n);
if n<=10 then begin
for i:=2 to n do
sum:=sum*i;
while sum mod 10=0 do sum:=sum div 10;
sum:=sum mod 10;
end
else
begin
nn:=0;
for i:=5 to n do
begin
p:=i;
while(p mod 5=0) do begin inc(nn);p:=p div 5;end;
end;
n2:=0;n5:=0;
for i:=2 to n do
begin
p:=i;
while (p mod 2=0)and(n2<>nn)do begin inc(n2);p:=p div 2;end;
while (p mod 5=0)and(n5<>nn)do begin inc(n5);p:=p div 5;end;
sum:=(sum*p) mod 10;
end;
end;
writeln(f2,sum);
close(f1);
close(f2);
end.