翻版的很大整数相加
程序代码:
#include<stdio.h> #include<string.h> int main() { char a[100],b[100],temp[100]; int pa[100],pb[100],n,i,la,lb,j,k; scanf("%d",&n); while(n--) { scanf("%s %s",a,b); la=strlen(a); lb=strlen(b); if(la<lb) { strcpy(temp,a); strcpy(a,b); strcpy(b,temp); j=la; la=lb; lb=j; } j=0; for(i=la-1;i>=0;i--) pa[j++]=a[i]-'a'+1; pa[j]=0; j=0; for(i=lb-1;i>=0;i--) pb[j++]=b[i]-'a'+1; for(i=0,k=0;i<la,k<lb;i++,k++) { pa[i]+=pb[k]; if(pa[i]>26) { pa[i]-=26; pa[i+1]++; } } if(pa[la]!=0) j=la; else j=la-1; for(i=j;i>=0;i--) printf("%c",pa[i]+'a'-1); printf("\n"); if(n) printf("\n"); } return 0; }
Description
计算A+B,但是这里A,B表示的是字符串。并且'a'表示1,'b'表示2...'z'表示26,如果两个字母相加的结果超过26,就进位。如:abcdef+aaaaaa,结果为bcdefg,a+z=aa.
Input
第一行为N,表示接下来有N组测试数据。接下来的N行表示N组测试数据,每组测试数据包含两个字符串,中间用空格隔开,并且保证每个字符串中的字符都是小写字母。
Output
输出A+B的结果,输出要求也是字符串。每两组数据之间有一个空行。
Sample Input
2
abcdef aaaaaa
a z
Sample Output
bcdefg
aa