Tính n! với n được nhập từ bàn phím n <= 50

Tính n! với n được nhập từ bàn phím
n <= 50

0 bình luận về “Tính n! với n được nhập từ bàn phím n <= 50”

  1. Program Hotboy;

    uses crt;

    var n, giaithua:qword;

    begin

         Clrscr;

         Repeat

         Write(‘Nhap so n: ‘);

         Readln(n);

         Until n<=50;

         Giaithua:=1;

         while n>0 do

         begin

         Giaithua:=giaithua*n;

         n:=n-1;

         end;

         Writeln(”n!=: ‘,Giaithua);

         Readln

    end.

    Bình luận
  2. Chương trình cho các bạn tham khảo!

    —–

    Program FNG;
    Uses crt;
    Type bignum = Ansistring;
    Var St,so: bignum;
        n,i: longint;

    Function add(a,b: bignum): bignum;
    Var sum,carry,i: longint;
        c: bignum;
    Begin
            carry:=0; c:=”;
            While length(a)<length(b) do a:=’0’+a;
            While length(b)<length(a) do b:=’0’+b;
            For i:=length(a) downto 1 do
            Begin
                    sum:=Ord(A[i])-48 + Ord(B[i])-48 + carry;
                    carry:=sum div 10;
                    c:=chr(sum mod 10+ 48) + c;
            End;
            If carry>0 then c:=’1’+c;
            add:=c;
    End;

    Function multiply1(a: bignum; b: longint): bignum;
    Var i: longint;
        carry,s: longint;
        c,tmp: bignum;
    Begin
            c:=”;
            carry:=0;
            For i:=length(a) downto 1 do
            Begin
                    s:=(Ord(A[i])-48)*b + carry;
                    carry:=s div 10;
                    c:=chr(s mod 10+48)+c;
            End;
            If carry>0 then Str(carry,tmp) else tmp:=”;
            multiply1:=tmp+c;
    End;

    Function multiply2(a,b: bignum): bignum;
    Var sum,tmp: bignum;
        m,i,j: longint;
    Begin
            m:=-1;
            sum:=”;
            For i:=length(a) downto 1 do
            Begin
                    m:=m+1;
                    tmp:=multiply1(b,Ord(A[i])-48);
                    For j:=1 to m do tmp:=tmp+’0′;
                    sum:=add(tmp,sum);
            End;
            multiply2:=sum;
    End;

    Begin
            Clrscr;
            Write(‘Nhap n: ‘); Readln(n);
            St:=’1′;
            For i:=1 to n do
            Begin
                    Str(i,so);
                    St:=Multiply2(St,so);
            End;

            Write(n,’! = ‘,St);
            Readln
    End.

    Bình luận

Viết một bình luận