//Pascal ABC.NET v3.0 сборка 1111 //Обойдусь без .Net-овских примочек
var a,b,i:integer; begin readln(a); if a=0 then begin; writeln('1'); exit; end; if a<0 then begin; writeln('Не определён'); exit; end; b:=1; for i:=1 to a do b:=b*i; writeln('Res=',b); end.
// PascalABC.NET 3.0, сборка 1157 от 02.02.2016 begin var n:=ReadInteger('n='); if n<0 then Writeln(n,'! не определено: n<0') else if n=0 then Writeln('0!=1') else begin var p:BigInteger:=1; for var i:=2 to n do p*=i; Writeln(n,'!=',p) end end.
//Обойдусь без .Net-овских примочек
var
a,b,i:integer;
begin
readln(a);
if a=0 then
begin;
writeln('1');
exit;
end;
if a<0 then
begin;
writeln('Не определён');
exit;
end;
b:=1;
for i:=1 to a do
b:=b*i;
writeln('Res=',b);
end.
Пример ввода:
3
Пример вывода:
6
begin
var n:=ReadInteger('n=');
if n<0 then Writeln(n,'! не определено: n<0')
else
if n=0 then Writeln('0!=1')
else begin
var p:BigInteger:=1;
for var i:=2 to n do p*=i;
Writeln(n,'!=',p)
end
end.
Тестовое решение:
n= 138
138!=691778647261948849222819828311491035886734385827028118707676848307166514238979223884785249055995983385450621636277440066920043595627074569065446040152660143904127838730788278294186615891819670506731208704000000000000000000000000000000000