profile
Опубликовано 6 лет назад по предмету Информатика от Аидо4каааа

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

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

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

  1. Ответ
    Ответ дан HappyMilk
    program pr;
    var i,x,a:longint;
    begin
    readln(a);
    x:=1;
    for i:=2 to a do
    x:=x*i;
    writeln(x);
    end.
    1. Ответ
      Ответ дан Аккаунт удален
      Есть один нехороший момент в таком решении. Если введенное значение превысит 20, произойдет арифметическое переполнение, которое в Паскале по умолчанию игнорируется, т.е. программа тихонько выдаст неверный ответ.
    2. Ответ
      Ответ дан Аккаунт удален
      Поэтому полезно при вводе проверять, чтобы введенное значение было между 1 и 20, либо в случае, если n>20, переходить на переменные типа real.
    3. Ответ
      Ответ дан Аккаунт удален
      Хотя, для школьной задачки решение безупречное.
    4. Ответ
      Ответ дан Аккаунт удален
      Вот написал и сам ошибся. 20 - это для переменной типа Int64. А для longint - всего 12
  2. Ответ
    Ответ дан Аккаунт удален
    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




Самые новые вопросы