#include <iostream>
#include <cstring>
#include<algorithm>
using namespace std;
int main()
{
char a[100],b[100];
int A[100],B[100];
int x,y;
while(cin>>x>>y)
{
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
cin>>a>>b;
for(int i=x-1,j=0;i>=0;i--,j++)
A[i]=a[j]-'0';
for(int i=y-1,j=0;i>=0;i--,j++)
B[i]=b[j]-'0';
int k;
for( k=0;k<max(x,y);k++)
{
A[k]+=B[k];
if(A[k]>9)
{
A[k]%=10;
A[++k]++;
}
}
if(A[k]) cout<<A[k];
for(int i=k-1;i>=0;i--)
cout<<A[i];
cout<<endl;
}
return 0;
}
优化版
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
char a[100]={0},b[100]={0};
int A[100]={0},B[100]={0};
int len1,len2;
cin>>len1>>len2;
cin>>a>>b;
reverse(a,a+len1);
reverse(b,b+len2);
for(int i=0;i<len1;i++)
A[i]=a[i]-'0';
for(int i=0;i<len2;i++)
B[i]=b[i]-'0';
int len=max(strlen(a),strlen(b));
for(int i=0;i<len;i++)
{
A[i]+=B[i];
A[i+1]+=A[i]/10;
A[i]%=10;
}
if(A[len]) cout<<A[len];
for(int i=len-1;i>=0;i--)
cout<<A[i];
return 0;
}