原文:http://blog.acmj1991.com/?p=736
題意:給你兩個數將數逆序後相加,然後將相加的數再次逆序。在兩次逆序的過程中需要去掉前導的零
思路:先去掉前導零,因爲是逆序相加後再逆序。也就是相當於把兩個數從高位相加,然後向後進位,然後在去掉前導零就是結果
#include<stdio.h>
#include<string.h>
#define maxN 110
int key[maxN],maxx;
void add(char *str)
{
int j,i,up=0,len=strlen(str);
for(i=1;i<=len;i++)
if(str[len-i]=='0')continue;
else break;
len=len-i+1;
for(i=0;i<len;i++)
if(str[i]=='0')continue;
else break;
for(j=0;i<len;j++,i++){
key[j]+=up+str[i]-'0';
up=key[j]/10;
key[j]=key[j]%10;
}
if(up!=0){
while(up){
key[j]+=up;
up=key[j]/10;
key[j++]%=10;
}
}
if(j>maxx)maxx=j;
}
int main()
{
int t;
char str1[110],str2[110];
scanf("%d",&t);
while(t--){
maxx=0;
memset(key,0,sizeof(key));
scanf("%s%s",str1,str2);
add(str1);
add(str2);
int flag=0;
for(int i=0;i<maxx;i++)
if(key[i]==0&&!flag)
continue;
else{
printf("%d",key[i]);
flag=1;
}
if(maxx==0)printf("0");
printf("\n");
}
}