<em>1. Современное решение</em> <em>// PascalABC.NET 3.3, сборка 1573 от 04.11.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
begin var n:=ReadInteger('n='); Writeln(n,'! = ',2.To(n).Aggregate(BigInteger(1),(i,j)->i*j)) end.
begin Write('n= '); Read(n); if n>20 then Writeln('Слишком большое n, допустимо 1,2, ... 20') else begin P:=1; for i:=2 to n do P:=P*i; Writeln(n,'! = ',P); end end.
<u>Примеры</u> n= 20 20! = 2432902008176640000
n= 43 Слишком большое n, допустимо 1,2, ... 20
Если не делать проверки n, было бы n= 43 43! = -7904866829883932672