Программу можно и не составлять (среди сомножителей есть 2, 5, 10, 12, 15 и, следовательно произведение будет оканчиваться на 3 нуля).
Если нужно найти не 3, а 4 последние цифры, то программа может быть такой:
var i,p:integer;
begin
p:=1;
for i:=1 to 18 do p:=p*i mod 10000;
writeln(p);
end.
Результат:
8000
А если вместо mod 10000 написать mod 1000, то:
Результат:
0