精密「+」アルゴリズム

高精度「+」アルゴリズム

高精度1.1「+」の準備、コードが取得され、次のことを覚えています

(1)まず、整数が格納されているどのように大きな理解する必要がありますか?

(2)は、ストレージ終わりに続いて、どのように操作を検討?

第二に、高精度の「+」コアアルゴリズム

2.1大きな整数ストレージ

•あなたは配列の先頭に記入場合、各ビットは、その高い正面を確保するために、配列に格納されており、この数は、アレイ上に終わることは容易である場合、これは数(上のキャリー、高アップに考えられているが、大きな整数数)は、すべての下位配列全体を変換する必要がありました。

2.2の追加のエッセンス

•10は、実際のプロセスに充填されている:A3A2A1A0 + B2B1B0 = C、愛+のBi + tの(1/0)の各対応するビットを考慮し、Tはキャリーです。

2.3また、私たちが知りたいです

未満の(1)A + BAとBの値(10 ^ 6)

未満の(2)AB AとBの値(10 ^ 6)

(3)A *満たすLEN(A)のAは、6 ^ 10未満、。注:これはビット数であります

(4)A / Aがlen満たすように(A)が10未満^ 6

第三に、高精度の「+」コードテンプレート

コメントを追加します

// C = A + B, A >= 0, B >= 0
vector<int> add(vector<int> &A,vector<int> &B)//A与B是倒着表示完的数组
{
    vector<int> C;
    
    int t=0;//进位,一开始是零
    for(int i=0;i<A.size()||i<B.size();i++)
    {
        if(i<A.size()) t+=A[i];
        if(i<B.size()) t+=B[i];//Ai+Bi+t
        C.push_back(t%10);
        t/=10;       
    }
    if(t) C.push_back(1);
    return C;
}
"""
string a, b;
vector<int> A,B;    
cin>>a>>b;
for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');//数字字符减去'0'将其转化位整数数字
for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');//大整数存储部分的代码
"""
作者:yxc
链接:https://www.acwing.com/problem/content/793/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

おすすめ

転載: www.cnblogs.com/lastk/p/12442140.html