高精度加法是干啥的相信大家都知道,这里就不再多说了。
它的大致思想就是将数字当作字符串逆向存入数组,然后在数组中进行逐位相加,要是超过十了就向前进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;