a,b可以是1000位,long long 也是hold不住
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char s1[1000];
char s2[1000];
char s[1001]={'\0'};
int n[1001];
gets(s1);
gets(s2);
int length1=strlen(s1);
int length2=strlen(s2);
int length=length1>length2?length2:length1;
int max=length1>length2?length1:length2;
int mmax=max+1;
int cf[mmax];
for(int j=0;j<=max;j++)
{
cf[j]=0;
}
int i;
int j;
for(i=0,j=0;i<length;i++,j++)
{
n[i]=(s1[length1-i-1]-'0')+(s2[length2-1-i]-'0')+cf[j];
if(n[i]>10)
{
s[max-i]=n[i]-10+'0';
cf[j+1]=1;
}
else
{
s[max-i]=n[i]+'0';
}
}
if(length1>length2)
{
while(i<length1)
{
n[i]=s1[length1-i-1]-'0'+cf[j];
if(n[i]>10)
{
s[max-i]=n[i]-10+'0';
cf[j+1]=1;
}
else
{
s[max-i]=n[i]+'0';
}
i++;
j++;
}
}
if(length1<length2)
{
while(i<length2)
{
n[i]=s2[length2-i-1]-'0'+cf[j];
if(n[i]>10)
{
s[max-i]=n[i]-10+'0';
cf[j+1]=1;
}
else
{
s[max-i]=n[i]+'0';
}
i++;
j++;
}
}
s[0]=cf[j]+'0';
printf("%s",s);
}