原文: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");
}
}