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= 20
20! = 2432902008176640000
n= 43
43! = 60415263063373835637355132068513997507264512000000000
2. "Школьный древний вариант"
// Free Pascal 3.0.0
var
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);
end
end.
Примеры
n= 20
20! = 2432902008176640000
n= 43
Слишком большое n, допустимо 1,2, ... 20
Если не делать проверки n, было бы
n= 43
43! = -7904866829883932672