Наверное алгоритм но я точно не знаю
<h3>PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018</h3><h3>Внимание! Если программа не работает, обновите версию!</h3>
begin
var a := ReadSeqInteger(20).Where(t -> Abs(t) < 10)
.Aggregate(BigInteger(1), (p, q)-> p * q).Println
end.
<h2>Пример</h2><h3>9 9 9 9 9 9 9 9 9 9 9 9 9 -9 -9 -9 -9 9 9 9</h3><h3>12157665459056928801 </h3>