1047: 小A的计算器

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]!='';j++){
   t1=t1*26+str1[j]-'a';
  }
  t2=0;
  for(j=0;str2[j]!='';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;
}

原文地址:https://www.cnblogs.com/lchzls/p/5781755.html