программа не будет давать верный ответ при n>20 т.к. нет такого целочисленного типа переменных. uint64-самый большой из всех
var
i, n, p: uint64;
a: array [1..10000] of integer;
begin
read(n);
p:=1;
for i:=1 to n do
begin
a[i]:=i;
p:=p*a[i];
end;
if n>33 then
writeln('eror')
else
if n=0 then
writeln('p=1')
else
writeln('p=',p);
end.