高精度加法

高精度加法是干啥的相信大家都知道,这里就不再多说了。

它的大致思想就是将数字当作字符串逆向存入数组,然后在数组中进行逐位相加,要是超过十了就向前进1.

它的代码如下

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<cstring>
 6 using namespace std;
 7 int main()
 8 {
 9     char al[100000],bl[100000];
10     int a[100000],b[100000],c[100000],lena,lenb,lenc,i,x;
11     memset(a,0,sizeof(a));
12     memset(b,0,sizeof(b));
13     memset(c,0,sizeof(c));
14     gets(al);
15     gets(bl);
16     lena = strlen(al);
17     lenb = strlen(bl);
18     for(i = 0;i <= lena - 1;i++)
19          a[lena - i] = al[i] - 48;
20     for(i = 0;i <= lenb - 1;i++)
21         b[lenb - i] = bl[i] - 48;
22     lenc = 1;
23     x = 0;
24     while(lenc <= lena || lenc <= lenb)
25     {
26         c[lenc] = a[lenc] + b[lenc] + x;//x是进位 
27         x = c[lenc] / 10;
28         c[lenc] %= 10;
29         lenc++;
30     }
31     c[lenc] = x;
32     if(c[lenc] == 0)//清除开头的0 
33         lenc--;
34     for(i = lenc;i >= 1;i--)//逆向输出 
35         printf("%d",c[i]);
36     return 0;
37 }

end;

原文地址:https://www.cnblogs.com/peppa/p/8495161.html