mn ơi giúp mình với viết giúp mình code hàm tính tích 2 số lớn với ạ

1 câu trả lời

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;

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