【问题描述】
以往的操作系统内部的数据表示都是二进制方式,小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;string s1, s2;cin >> n;while (n--) {string res;int cnt = 0, i, j;cin >> s1 >> s2;if (s1.size() < s2.size()) {string tmp = s1;s1 = s2;s2 = tmp;}i = s1.size();j = s2.size();while (j > 0) {char res1 = s1[--i] + s2[--j] + cnt - 'a';res.insert(res.begin(), res1);if (res1 > 25 + 'a') cnt = 1;else cnt = 0;}if (i > 0) {if (cnt == 1) s1[i]++;res.insert(0, s1.substr(0, i));}cout << res << endl;}return 0;
}