Напишите программу, которая вводит натуральное число N и определяет его факториал, то есть произведение натуральных чисел от 1 до N : N ! = 1·2·{...}· N .
Входные данные
Входная строка содержит одно натуральное число N .
Выходные данные
Программа должна вывести одно число – факториал введённого числа N .
Ответы
Ответ дал:
0
program pr;
var i,x,a:longint;
begin
readln(a);
x:=1;
for i:=2 to a do
x:=x*i;
writeln(x);
end.
var i,x,a:longint;
begin
readln(a);
x:=1;
for i:=2 to a do
x:=x*i;
writeln(x);
end.
Ответ дал:
0
Есть один нехороший момент в таком решении. Если введенное значение превысит 20, произойдет арифметическое переполнение, которое в Паскале по умолчанию игнорируется, т.е. программа тихонько выдаст неверный ответ.
Ответ дал:
0
Поэтому полезно при вводе проверять, чтобы введенное значение было между 1 и 20, либо в случае, если n>20, переходить на переменные типа real.
Ответ дал:
0
Хотя, для школьной задачки решение безупречное.
Ответ дал:
0
Вот написал и сам ошибся. 20 - это для переменной типа Int64. А для longint - всего 12
Ответ дал:
0
var
i:integer;
f,n:longint;
fr:real;
begin
Write('N='); Read(n);
if n<=12 then begin
f:=1;
for i:=2 to n do f:=f*i;
Writeln('F=',f)
end
else begin
fr:=1;
for i:=2 to n do fr:=fr*i;
Writeln('F=',fr)
end
end.
Тестовые решения:
N=12
F=479001600
N=13
F=6227020800
N=20
F=2.43290200817664E+18
i:integer;
f,n:longint;
fr:real;
begin
Write('N='); Read(n);
if n<=12 then begin
f:=1;
for i:=2 to n do f:=f*i;
Writeln('F=',f)
end
else begin
fr:=1;
for i:=2 to n do fr:=fr*i;
Writeln('F=',fr)
end
end.
Тестовые решения:
N=12
F=479001600
N=13
F=6227020800
N=20
F=2.43290200817664E+18
Вас заинтересует
2 года назад
2 года назад
7 лет назад
7 лет назад
10 лет назад
10 лет назад
10 лет назад
10 лет назад