题目给出的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; }
时间: 2025-01-02 13:46:57