算法入门笔记:大数相加减(高精度)
高精度减法
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string A, B;
int a[10000], b[10000], c[10000], i, j;
char ch = '-';
int main()
{
cin >> A >> B;
int lena = A.size();
int lenb = B.size();
int lenc;
if (lenb > lena || (lena == lenb && B > A))
{
cout << ch;
swap(A, B);
swap(lena, lenb);
}
for (i = 0; i < lena; i++)
a[lena - i] = A[i] - '0';
for (j = 0; j < lenb; j++)
b[lenb - j] = B[j] - '0';
int w = 1;
while (w <= lena)
{
c[w] = a[w] - b[w];
if (c[w] < 0)
{
c[w] = c[w] + 10;
a[w + 1] --;
}
w++;
}
while (c[w] == 0 && w > 0)
w--;
if (w == 0)
cout << "0";
else
for (; w > 0; w--)
cout <<c[w];
cout << endl;
return 0;
}

高精度加法
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string A, B;
int a[10000], b[10000], c[10000];
int main()
{
cin >> A >> B;
int lena = A.size();
int lenb = B.size();
for (int i = 0; i < lena; i++)
a[lena - i] = A[i] - '0';
for (int i = 0; i < lenb; i++)
b[lenb - i] = B[i] - '0';
int w = 1, j = 0;
while (w <= A.size() || w <= B.size())
{
c[w] = a[w] + b[w] + j;
j = c[w] / 10;
c[w] %= 10;
w++;
}
c[w] = j;
while (c[w] == 0 && w >= 0)
w--;
if (w == -1)
cout << "0" << endl;
else
for (; w > 0; w--)
cout << c[w];
cout << endl;
return 0;
}
