Các anh chị giải giúp e đề này với Viết chương trình tích và suất ra tích p sau :P 1*2*3 ...*120

1 câu trả lời

Bài này do tích quá lớn nên các kiểu dữ liệu sẽ bị tràn số nên ta dùng Bignum. Giá trị của $P = 120!$

 

uses crt;
type BIGNUMBA = AnsiString;
var ans: BIGNUMBA;
    i: longint;

function mul(a:BIGNUMBA; b:longint): BIGNUMBA;
var i, carry, sum:longint;
    ans, tmp: BIGNUMBA;
begin
    ans:=''; carry:=0;

    for i:=length(a) downto 1 do
        begin
            sum:=(ord(a[i]) - 48) * b + carry;
            carry:=sum div 10;
            ans:=chr(sum mod 10 + 48) + ans;
        end;

    if(carry > 0) then str(carry,tmp) else tmp:='';
    exit(tmp + ans);
end;

begin
clrscr;
    ans:='1';
    for i:=1 to 120 do
        ans:=mul(ans, i);

    writeln(ans);
readln;
end.

Câu hỏi trong lớp Xem thêm