1047: 小A的计算器
时间限制: 1 Sec 内存限制: 128 MB
提交: 124 解决: 105
[提交][状态][讨论版]
题目描述
以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。
现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。你能帮小A实现这个计算器吗?
输入
输入的第一行包括一个整数N(1<=N<=100)。
接下来的N行每行包括两个26进制数x和y,它们之间用空格隔开,每个数的位数最多为10位,我们可以保证相加的结果的位数最多也是10位。每个数会用小A所设计的操作系统中的表示方法来表示,如:bsadfasdf。即每个数的各个位均由26个小写字母a-z中的一个来表示。
输出
输出x和y相加后的结果,结果也要用题目中描述的26进制数来表示。
样例输入
4 ba cd c b b c ba c
样例输出
dd d d bc
提示
来源
#include <iostream>
using namespace std;
int main(){
int n,i,j,s1,s2,t1,t2,a[100];
string str1,str2,str="abcdefghijklmnopqrstuvwxyz";
int k;
cin>>n;
for(i=0;i<n;i++){
cin>>str1>>str2;
t1=0;
k=0;
for(j=0;str1[j]!=‘\0‘;j++){
t1=t1*26+str1[j]-‘a‘;
}
t2=0;
for(j=0;str2[j]!=‘\0‘;j++){
t2=t2*26+str2[j]-‘a‘;
}
s1=t1+t2;
while(s1!=0){
a[k++]=s1%26;
s1=s1/26;
}
for(j=k-1;j>=0;j--){
cout<<str[a[j]];
}
cout<<endl;
}
return 0;
}