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

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

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


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

Решение только для 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


(142k баллов)
0 голосов

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. 

(1.4k баллов)