#include <iostream> #include <cstdio> #include <cstring> #define MAX 10000 using namespace std; typedef struct bignum //定义大数类型 { bignum(){memset(arr,0,sizeof(arr));length=0;} //初始化成员变量 int arr[MAX*2+10]; int length; }Bignum; char s[MAX]; char t[MAX]; Bignum atoi(char *s) //字符串转换为大数类型 { Bignum res; int slen=strlen(s); for(int k=slen-1;k>=0;k--) { res.arr[k]=s[k]-'0'; } res.length=slen; return res; } //大数加法 Bignum add(Bignum a,Bignum b) { Bignum res; if(a.length<b.length) //如果a的长度小于b的长度,交换a,b。 swap(a,b); int i,j; for(i=a.length-1,j=b.length-1;j>=0;i--,j--) //后往前处理,把b的值全部加到a { a.arr[i]+=b.arr[j]; } res.length=a.length+1; //更新一下长度 //处理进位 int temp=0; for(i=a.length-1;i>=0;i--) { int sum=a.arr[i]+temp; res.arr[i+1]=sum%10; temp=sum/10; } if(temp) res.arr[0]=temp; //处理前导0 if(res.arr[0]==0) { for(j=0;j<res.length-1;j++) res.arr[j]=res.arr[j+1]; res.length--; } return res; } //输出大数 void print(Bignum b) { for(int i=0;i<b.length;i++) cout<<b.arr[i]; cout<<endl; } int main() { while(cin>>s>>t) { print(add(atoi(s),atoi(t))); } return 0; }