1. Современное решение// PascalABC.NET 3.3, сборка 1573 от 04.11.2017// Внимание! Если программа не работает, обновите версию!begin var n:=ReadInteger('n='); Writeln(n,'! = ',2.To(n).Aggregate(BigInteger(1),(i,j)->i*j))end.
Примерыn= 2020! = 2432902008176640000n= 4343! = 60415263063373835637355132068513997507264512000000000
2. "Школьный древний вариант"// Free Pascal 3.0.0var i,n:longint; P:int64;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); endend.
Примерыn= 2020! = 2432902008176640000n= 43Слишком большое n, допустимо 1,2, ... 20Если не делать проверки n, было быn= 4343! = -7904866829883932672