1 #include <iostream>
2 #include <string.h>
3 #include <string>
4 using namespace std;
5 char s1[10005],s2[10005];
6 int a[10005],b[10005],c[10005];
7 int flag;
8 int main()
9 {
10 cin>>s1;
11 cin>>s2;
12 int len1=strlen(s1),len2=strlen(s2);
13 int p1=0,p2=0;
14
15 if(s1[0]!='-' && s2[0]!='-')
16 {
17 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
18 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
19 int len=len1>len2?len1:len2;
20 for(int i=0;i<=len-1;i++)
21 {
22 c[i]+=a[i]+b[i];
23 while(c[i]>=10)
24 {
25 c[i]-=10;
26 c[i+1]+=1;
27 }
28 }
29 if(c[len]!=0) cout<<c[len];
30 for(int i=len-1;i>=0;i--) cout<<c[i];
31 cout<<endl;
32 }
33
34 else if(s1[0]=='-' && s2[0]=='-')
35 {
36 for(int i=len1-1;i>=1;i--) a[p1++]=s1[i]-'0';
37 for(int j=len2-1;j>=1;j--) b[p2++]=s2[j]-'0';
38 int len=len1>len2?len1:len2;
39 for(int i=0;i<=len-1-1;i++)
40 {
41 c[i]+=a[i]+b[i];
42 while(c[i]>=10)
43 {
44 c[i]-=10;
45 c[i+1]+=1;
46 }
47 }
48 //if(c[len]!=0) cout<<c[len]; 因为负号原因,减1,可以省去,用下面一行
49 cout<<'-';
50 if(c[len-1]!=0) cout<<c[len-1];
51 for(int i=len-1-1;i>=0;i--) cout<<c[i];
52 cout<<endl;
53 }
54
55 else if(s1[0]=='-' && s2[0]!='-')
56 {
57 for(int i=0;i<=len1-1;i++) s1[i]=s1[i+1];
58 len1=strlen(s1);
59
60 if(len1==len2)
61 {
62 if(strcmp(s1,s2)>0) flag=-1;
63 else if(strcmp(s1,s2)<0) flag=1;
64
65 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
66 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
67 int len=len1>len2?len1:len2;
68 if(flag==0) cout<<'0'<<endl;
69 else if(flag==-1)
70 {
71 for(int i=0;i<=len-1;i++)
72 {
73 c[i]+=a[i]-b[i];
74 while(c[i]<0)
75 {
76 c[i]+=10;
77 c[i+1]-=1;
78 }
79 }
80 cout<<'-';
81 }
82 else if(flag==1)
83 {
84 for(int i=0;i<=len-1;i++)
85 {
86 c[i]+=b[i]-a[i];
87 while(c[i]<0)
88 {
89 c[i]+=10;
90 c[i+1]-=1;
91 }
92 }
93 }
94 /*if(c[len]!=0) cout<<c[len];
95 for(int i=len-1;i>=0;i--) cout<<c[i];*/ //减法不能这么输出,如12,19,是07,可能会减出前导0
96 int j;
97 for(j=len;j>=0;j--) if(c[j]!=0) break;
98 for(int i=j;i>=0;i--) cout<<c[i];
99 cout<<endl;
100 }
101
102 else if(len1>len2)
103 {
104 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
105 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
106 int len=len1>len2?len1:len2;
107 for(int i=0;i<=len-1;i++)
108 {
109 c[i]+=a[i]-b[i];
110 while(c[i]<0)
111 {
112 c[i]+=10;
113 c[i+1]-=1;
114 }
115 }
116 cout<<'-';
117 int j;
118 for(j=len;j>=0;j--) if(c[j]!=0) break;
119 for(int i=j;i>=0;i--) cout<<c[i];
120 cout<<endl;
121 }
122
123 else if(len1<len2)
124 {
125 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
126 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
127 int len=len1>len2?len1:len2;
128 for(int i=0;i<=len-1;i++)
129 {
130 c[i]+=b[i]-a[i];
131 while(c[i]<0)
132 {
133 c[i]+=10;
134 c[i+1]-=1;
135 }
136 }
137 int j;
138 for(j=len;j>=0;j--) if(c[j]!=0) break;
139 for(int i=j;i>=0;i--) cout<<c[i];
140 cout<<endl;
141 }
142 }
143
144 else if(s1[0]!='-' && s2[0]=='-')
145 {
146 for(int i=0;i<=len2-1;i++) s2[i]=s2[i+1];
147 len2=strlen(s2);
148
149 if(len1==len2)
150 {
151 if(strcmp(s1,s2)>0) flag=1;
152 else if(strcmp(s1,s2)<0) flag=-1;
153
154 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
155 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
156 int len=len1>len2?len1:len2;
157 if(flag==0) cout<<'0'<<endl;
158 else if(flag==1)
159 {
160 for(int i=0;i<=len-1;i++)
161 {
162 c[i]+=a[i]-b[i];
163 while(c[i]<0)
164 {
165 c[i]+=10;
166 c[i+1]-=1;
167 }
168 }
169 }
170 else if(flag==-1)
171 {
172 for(int i=0;i<=len-1;i++)
173 {
174 c[i]+=b[i]-a[i];
175 while(c[i]<0)
176 {
177 c[i]+=10;
178 c[i+1]-=1;
179 }
180 }
181 cout<<'-';
182 }
183 /*if(c[len]!=0) cout<<c[len];
184 for(int i=len-1;i>=0;i--) cout<<c[i];*/ //减法不能这么输出,如12,19,是07,可能会减出前导0
185 int j;
186 for(j=len;j>=0;j--) if(c[j]!=0) break;
187 for(int i=j;i>=0;i--) cout<<c[i];
188 cout<<endl;
189 }
190
191 else if(len1>len2)
192 {
193 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
194 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
195 int len=len1>len2?len1:len2;
196 for(int i=0;i<=len-1;i++)
197 {
198 c[i]+=a[i]-b[i];
199 while(c[i]<0)
200 {
201 c[i]+=10;
202 c[i+1]-=1;
203 }
204 }
205 int j;
206 for(j=len;j>=0;j--) if(c[j]!=0) break;
207 for(int i=j;i>=0;i--) cout<<c[i];
208 cout<<endl;
209 }
210
211 else if(len1<len2)
212 {
213 for(int i=len1-1;i>=0;i--) a[p1++]=s1[i]-'0';
214 for(int j=len2-1;j>=0;j--) b[p2++]=s2[j]-'0';
215 int len=len1>len2?len1:len2;
216 for(int i=0;i<=len-1;i++)
217 {
218 c[i]+=b[i]-a[i];
219 while(c[i]<0)
220 {
221 c[i]+=10;
222 c[i+1]-=1;
223 }
224 }
225 cout<<'-';
226 int j;
227 for(j=len;j>=0;j--) if(c[j]!=0) break;
228 for(int i=j;i>=0;i--) cout<<c[i];
229 cout<<endl;
230 }
231 }
232
233 return 0;
234 }