Вычислить факториал числа n (n! ) . (прим: 5! =1*2*3*4*5)

dimapm04 dimapm04    1   29.06.2019 08:30    0

Ответы
лина28051 лина28051  02.10.2020 14:58
Const    len = 1000;

type
    longnum = array[1..len] of longint;

var
      n, i: longint;
      s: longnum;
    
procedure InitLongNumber(n: longint; var a: longnum);
var
    i: longint;
begin
    for i := 1 to len do
        if n <> 0 then
            begin
                a[i] := n mod 10;
                n := n div 10
             end else
                a[i] := 0;
end;

function mul(a: longnum; k: longint): longnum;
var
    i, tmp: longint;
begin
    tmp := 0;
    
    for i := 1 to len - 1 do
    begin
        a[i] := a[i] * k + tmp;
        tmp := a[i] div 10;
        a[i] := a[i] mod 10 
    end;

    result := a
end;

procedure PrintLongNumber(a: longnum);
var
    i, j: longint;
begin
    i := len;
    while a[i] = 0 do
        dec(i);
    for j := i downto 1 do
        write(a[j])
end;

begin   
    readln(n);
    InitLongNumber(1, s);
    for i := 1 to n do
            s := mul(s, i);
    write(n, '! = ');
    PrintLongNumber(s);
end. 
ПОКАЗАТЬ ОТВЕТЫ
fatimatagiyeva fatimatagiyeva  02.10.2020 14:58
Решение только для PascalABC.Net:

uses System.Numerics;
var
  n,i:integer;
begin
  Write('Введите натуральное число: '); Read(n);
  var f:=new BigInteger(1);
  for i:=2 to n do f:=f*i;
  Writeln(n,'! = ',f);
end.

Тестовое решение:
Введите натуральное число: 50
50! = 30414093201713378043612608166064768844377641568960512000000000000
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика