2981:大整数加法

转载请注明出处:http://www.cnblogs.com/zhishoumuguinian/p/8428283.html

样例输入

22222222222222222222
33333333333333333333

样例输出

 

55555555555555555555

 

思路:正常的大数加法我就不说啥了,这个题给我坑的。

这个题需要注意的是当输入为

000000
000000

输出是

0

输入为

00001
00001

输出是

2

 其余的就是大数加法了

 1 #include <iostream>
 2 #include<string>
 3 
 4 using namespace std;
 5 
 6 int main()
 7 {
 8     string s1, s2;
 9     int a[250]={0}, b[250]={0};
10     int i, j;
11     cin>>s1>>s2;
12     a[0]=s1.length();
13     //cout<<a[0]<<endl;
14     b[0]=s2.length();
15     //cout<<b[0]<<endl;
16     for(i=1; i<=a[0]; i++)
17     {
18         a[i]=s1[a[0]-i]-'0';
19     }
20     for(i=1; i<=b[0]; i++)
21     {
22         b[i]=s2[b[0]-i]-'0';
23     }
24     int k=max(a[0],b[0]);
25     for(i=1; i<=k; i++)
26     {
27         a[i+1]+=(a[i]+b[i])/10;
28         a[i]=(a[i]+b[i])%10;
29     }
30     if(a[k+1]>0)  a[0]=k+1;
31     else a[0]=k;//前边是正常的大数加法
32     while(a[a[0]]==0&&a[0]>0)//除去多余的0
33     {
34         a[0]--;
35     }
36     if(a[0]==0)//如果把零都除没了,那就是0了
37     cout<<0;
38     else
39     for(j=a[0]; j>0; j--)
40     {
41         cout<<a[j];
42     }
43 }

 

原文地址:https://www.cnblogs.com/zhishoumuguinian/p/8428283.html