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