高精度加法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
#include<string>
using namespace std;

int arr[510];//第一个数
int brr[510];//第二个数
int crr[1000];//最终结果
string a, b;//录入两个数

int main()
{
cin >> a >> b;
int la = a.length();//第一个数的位数
int lb = b.length();//第二个数的位数

for (int i = 0; i < la; i++)
{
arr[la-i] = a[i] - '0';
}//倒序存储第一个数,从1开始

for (int i = 0; i < lb; i++)
{
brr[lb-i] = b[i] - '0';
}//倒序存储第二个数,从1开始

int lc = max(la, lb) + 1;//结果最高位数,两数取最高再加一

for (int i = 0; i < lc; i++)
{
crr[i] += arr[i] + brr[i];
crr[i + 1] = crr[i] / 10;
crr[i] = crr[i] % 10;
}//从低位到高位计算结果

if (crr[lc] == 0 && lc > 0) lc--;//消除前导0

for (int i = lc; i > 0; i--)
{
cout << crr[i];
}//输出
return 0;
}