Precision "+" algoritmo

A precisão "+" algoritmo

A preparação de alta precisão 1.1 "+", lembre-se o seguinte, o código estará recebendo

(1) Em primeiro lugar, precisamos entender o quão grande inteiro um é armazenado?

(2) seguido de final de armazenamento, considere como operação?

Em segundo lugar, de alta precisão "+" algoritmo de núcleo

2.1 armazenamento número inteiro grande

• As grandes inteiros cada bit é armazenado em uma matriz, para garantir que a alta frente e isso é considerado de transportar, no alto de um número (se este número é fácil acabar na matriz, mas se você preencher no início de um array o número necessário para traduzir uma matriz inteira todos para trás).

Essência da adição de 2,2

• 10 é realmente cheio num processo: A3A2A1A0 + B2B1B0 = C, considerar cada bits correspondendo Ai + Bi + t (1/0), t é um transporte.

2.3 Além disso, queremos saber

(1) Os valores de A + Ba e B inferior a (10 ^ 6)

(2) os valores AB A e B de menos de (10 ^ 6)

(3) A * a A para satisfazer len (A) é inferior a 10 ^ 6, nota: este é o número de bits

(4) A / a Uma Para satisfazer len (A) é inferior a 10 ^ 6

Em terceiro lugar, de alta precisão "+" modelo de código

Adicionar um comentário

// 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
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Acho que você gosta

Origin www.cnblogs.com/lastk/p/12442140.html
Recomendado
Clasificación