题目给出的26进制数要我们相加,先转化为10进制相加后在转化为26进制,其实和直接用26进制直接相加一样,所以我们直接相加即可
注意如果全是A则输出A,例如AAAAAAA AAAAAA 输出结果即A
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int i,j,k,mark;
int maxlen;
string str1,str2;
char ch;
int a[2100],b[2100],s[20100];
while(cin>>str1>>str2)
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(s,0,sizeof(s));
int l1=str1.size();
int l2=str2.size();
maxlen=l1>l2?l1:l2;
k=0;mark=0;
for(i=l1-1;i>=0;i--)
{
a[k]=str1[i]-65;
k++;
}
k=0;
for(i=l2-1;i>=0;i--)
{
b[k]=str2[i]-65;
k++;
}
for(i=0;i<maxlen;i++)
{
s[i]+=(a[i]+b[i]);
//进位思想
if(s[i]>25)
{
s[i+1]++;
s[i]%=26;
}
}
i=2000;
while(i--)
{
if(s[i]!=0)
break;
}
for(;i>=0;i--)
{
for(j=0;j<=25;j++)
{
if(s[i]==j)
{
mark=1;
ch=j+65;
cout<<ch;
}
}
}
if(mark==0)
{
//for(i=0;i<maxlen;i++)
cout<<"A";
}
cout<<endl;
}
return 0;
}