1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include <cstdlib> 5 #define p 8 6 #define carry 100000000 7 #define maxn 10001 8 #define maxns 2001 9 long long ll=0; 10 char s1[maxn],s2[maxn]; 11 int a[maxns],b[maxns]; 12 using namespace std; 13 int change(char s[],int n[]) 14 { 15 char temp1[maxn]; 16 int len=strlen(s),cur=0; 17 while(len/p) 18 { 19 strncpy(temp1,s+len-p,p); 20 n[++cur]=atoi(temp1); 21 len-=p; 22 } 23 if(len){ 24 memset(temp1,0,sizeof(temp1)); 25 strncpy(temp1,s,len); 26 n[++cur]=atoi(temp1); 27 } 28 return cur; 29 } 30 int add(int a[],int b[],int x1,int x2) 31 { 32 for(int i=1;i<=x2;i++) 33 { 34 a[i]-=b[i]; 35 if(a[i]<0) 36 { 37 a[i+1]--; 38 a[i]+=carry; 39 } 40 //cout<<a[i]<<endl; 41 } 42 while(a[x1]==0&&x1>1)x1--; 43 return x1; 44 } 45 void swap(char w[],char y[]) 46 { 47 char temp[maxn]; 48 strcpy(temp,y); 49 strcpy(y,w); 50 strcpy(w,temp); 51 } 52 bool judge(char a[],char b[]) 53 { int l1,l2; 54 l1=strlen(a); 55 l2=strlen(b); 56 if(l1>l2)return false; 57 if(l2>l1)return true; 58 for(int i=0;i<l1;i++) 59 { 60 if(a[i]>b[i])return false; 61 if(a[i]<b[i])return true; 62 } 63 return false; 64 } 65 void sin() 66 { 67 scanf("%s",s1); 68 scanf("%s",s2); 69 if(judge(s1,s2)) 70 { 71 swap(s1,s2); 72 printf("-"); 73 } 74 int l1=change(s1,a); 75 int l2=change(s2,b); 76 ll=add(a,b,l1,l2); 77 } 78 void print(long long l) 79 { 80 printf("%d",a[l]); 81 for(int i=l-1;i>=1;i--)printf("%0*d",p,a[i]); 82 83 } 84 int main() 85 { //freopen("test1.in","r",stdin); 86 //freopen("test2out","w",stdout); 87 sin(); 88 print(ll); 89 return 0; 90 }