Precision "-" algoritmo

A alta precisão "-" algoritmo

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

(1) Em primeiro lugar, de alta precisão "+" mesma abordagem para armazenar grandes números inteiros

(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

• Se está escrito '+' '-' '*' '/' que deve ser garantido o mesmo formato de armazenamento inteiro grande, porque muitas vezes não é apenas um símbolo de operação.

2.2 subtração da natureza

• grande inteiro subtração: C = A3A2A1A0-B2B1B0, dois casos devem ser considerados, se Ai-Bi-t Salvar o suficiente, a final mediana Ai-Bi-t, se não for reduzido, em comparação com o último dígito Ai-Bi-t + 10, de facto, em ambos os casos (t + 10)% 10 é.

2.3 Além disso, queremos saber

(1) aprender a julgar o tamanho de dois inteiros grandes na matriz, a mediana é geralmente diferente, maior comprimento que será maior, se o mesmo número de bits, a partir da comparação bit mais alto, que é o último bit da matriz .

(2) se A for maior ou igual a B -> operador directa, ou -> - (BA).

(3) A situação pode ocorrer zeros removido!

(4) Processamento Aqui dois inteiros positivos, se inteiro negativo, será capaz de converter bit | A | + | B | ou | A | - | B |.

Em terceiro lugar, de alta precisão "-" modelos de código

Adicionar um comentário

"""
bool cmp(vector<int> &A,vector<int> &B)//判断A是否大于等于B
{
    if(A.size() != B.size()) return A.size() > B.size();
    for(int i=A.size() - 1; i>=0; i--)
        if(A[i]!=B[i])
            return A[i]>B[i];
    return true;
}
"""
}
// C = A - B, 满足A >= B, A >= 0, B >= 0
vector<int> sub(vector<int> &A, vector<int> &B)
{
    vector<int> C;
    for (int i = 0, t = 0; i < A.size(); i ++ )
    {
        t = A[i] - t;
        if (i < B.size()) t -= B[i];
        C.push_back((t + 10) % 10);//分两种情况考虑,如果Ai-Bi-t够减,则最终的位数为Ai-Bi-t,如果不够减,最终的位数则为Ai-Bi-t+10
        if (t < 0) t = 1;
        else t = 0;
    }

    while (C.size() > 1 && C.back() == 0) C.pop_back();//去掉前导零
    return C;
}

作者:yxc
链接:https://www.acwing.com/problem/content/794/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Acho que você gosta

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