给出两个字符串相加,20进制。注意的是同为0时要输出0;类似于大整数加法。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <algorithm>
using namespace std;
char stra[105],strb[110];
int main()
{
memset(stra,'\0',sizeof(stra));
memset(strb,'\0',sizeof(strb));
while(scanf("%s %s",stra,strb)!=EOF)
{
int lena=strlen(stra);
int lenb=strlen(strb);
reverse(stra,stra+lena);
reverse(strb,strb+lenb);
int sum=0;
for(int i=0;i<110;i++)
{
int a,b;
if(stra[i]>='a')
a=stra[i]-'a'+10;
else if(stra[i]=='\0')
a=0;
else
a=stra[i]-'0'+0;
if(strb[i]>='a')
b=strb[i]-'a'+10;
else if(strb[i]=='\0')
b=0;
else
b=strb[i]-'0'+0;
sum=a+b+sum;
if(sum%20>=10)
strb[i]=sum%20-10+'a';
else
strb[i]=sum%20+'0';
sum/=20;
}
int flag=0;
for(int i=109;i>=0;i--)
{
if(strb[i]!='0')
{
flag=1;
}
if(flag)
printf("%c",strb[i]);
}
if(flag==0)
printf("0");
printf("\n");
memset(stra,'\0',sizeof(stra));
memset(strb,'\0',sizeof(strb));
}
return 0;
}