#include<cstdio>
#include<cstring>
using namespace std;
int *str2int(char *str)
{
int i ,len=strlen(str);
int *a=new int [(len+1)*sizeof(int)];
for(i=0;i<len;i++)
a[i]=(int)str[len-i-1]-48;
return a;
}
int check(int *a,int n)
{
int k=0,len=n;
while(a[len-1]==0&&len>1)
len--;
for(k=0;k<len;k++)
{
if(a[k]>=10)
{
a[k+1]=a[k+1]+a[k]/10;
a[k]=a[k]%10;
}
}
if(a[k]!=0)
len=k+1;
return len;
}
char *int2str(int *a,int n)
{
int i;
char *str=new char[(n+1)*sizeof(char)];
for(i=0;i<n;i++)
str[i]=(char)a[n-i-1]+48;
str[n]='\0';
return str;
}
char *addition(char *m1,char *m2)
{
int i,len1,len2;
int *t1,*t2;
len1=strlen(m1);
len2=strlen(m2);
int len=(len1>len2)?len1:len2;
t1=new int[(len+2)*sizeof(int)];
t2=new int[(len+2)*sizeof(int)];
t1=str2int(m1);
t2=str2int(m2);
for(i=len1;i<len+1;i++)
t1[i]=0;
for(i=len2;i<len+1;i++)
t2[i]=0;
for(i=0;i<len;i++)
t1[i]=t1[i]+t2[i];
len=check(t1,len);
return int2str(t1,len);
}
int main()
{
char s1[1010],s2[1010];
int n;
int m=0;
scanf("%d",&n);
while(n--)
{
scanf("%s%s",s1,s2);
printf("case %d:\n",++m);
printf("%s + %s = %s\n",s1,s2,addition(s1,s2));
}
return 0;
}
这是大数加法的一道acm题,
提交后为什么是system error
请教各位大神