Напишите программу, которая вводит натуральное число N и определяет его факториал, то...

0 голосов
159 просмотров

Напишите программу, которая вводит натуральное число N и определяет его факториал, то есть произведение натуральных чисел от 1 до N : N ! = 1·2·{...}· N .

Входные данные
Входная строка содержит одно натуральное число N .

Выходные данные
Программа должна вывести одно число – факториал введённого числа N .


Информатика (166 баллов) | 159 просмотров
Дано ответов: 2
0 голосов
Правильный ответ

Var
  i:integer;
  f,n:longint;
  fr:real;
begin
  Write('N='); Read(n);
  if n<=12 then begin<br>    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




(142k баллов)
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.

(292 баллов)
0

Есть один нехороший момент в таком решении. Если введенное значение превысит 20, произойдет арифметическое переполнение, которое в Паскале по умолчанию игнорируется, т.е. программа тихонько выдаст неверный ответ.

0

Поэтому полезно при вводе проверять, чтобы введенное значение было между 1 и 20, либо в случае, если n>20, переходить на переменные типа real.

0

Хотя, для школьной задачки решение безупречное.

0

Вот написал и сам ошибся. 20 - это для переменной типа Int64. А для longint - всего 12