代码如下:
#include <stdio.h>
#include <algorithm>
#include <math.h>
#include <string.h>
using namespace std;
#define lnt long long
const int N=1e3;
struct hnt
{
int f,siz,g[N];
}a,b;
namespace hnt_operate
{
hnt temp;
hnt init(char x[])
{
memset(temp.g,0,sizeof(temp.g));
temp.siz=strlen(x);
for(int i=temp.siz-1;i>-1;--i)//反转储存
{temp.g[i]=*(x++)-'0';}
return temp;
}
hnt add(hnt a,hnt b)
{
memset(temp.g,0,sizeof(temp.g));
temp.siz=max(a.siz,b.siz);
for(int i=0;i<temp.siz;++i)
{
temp.g[i]+=a.g[i]+b.g[i];
if(temp.g[i]>9){temp.g[i]-=10;temp.g[i+1]+=1;}//处理进位
}
if(temp.g[temp.siz]!=0){++temp.siz;}//位数是否多了
return temp;
}
void print(hnt x)
{
for(int i=x.siz-1;i>-1;--i)//反转输出
{putchar(x.g[i]+'0');}
}
}
using namespace hnt_operate;
char sra[N],srb[N];
int main()
{
scanf("%s%s",sra,srb);
a=init(sra),b=init(srb);
print(add(a,b));
return 0;
}