人类习惯用 10 进制,可能因为大多数人类有 10 根手指头,可以用于计数。这个世界上有一种叫“钱串子”(学名“蚰蜒”)的生物,有 30 只细长的手/脚,在它们的世界里,数字应该是 30 进制的。本题就请你实现钱串子世界里的加法运算。 输入格式: 输入在一行中给出两个钱串子世界里的非负整数,其间以空格分隔。 所谓“钱串子世界里的整数”是一个 30 进制的数字,其数字 0 到 9 跟人类世界的整数一致,数字 10 到 29 用小写英文字母 a 到 t 顺次表示。 输入给出的两个整数都不超过 10 5 位。 输出格式: 在一行中输出两个整数的和。注意结果数字不得有前导零。
时间: 2023-05-31 20:02:55 浏览: 168
#include <iostream>
#include <string>
using namespace std;
int main() {
string a, b;
cin >> a >> b;
int lena = a.size(), lenb = b.size();
if (lena < lenb) { // 保证 a 的长度不小于 b
swap(a, b);
swap(lena, lenb);
}
int carry = 0; // 进位
for (int i = 1; i <= lena; i++) {
int numa = (a[lena-i] >= '0' && a[lena-i] <= '9') ? a[lena-i]-'0' : a[lena-i]-'a'+10;
int numb = 0;
if (i <= lenb) {
numb = (b[lenb-i] >= '0' && b[lenb-i] <= '9') ? b[lenb-i]-'0' : b[lenb-i]-'a'+10;
}
int sum = numa + numb + carry;
carry = sum / 30;
sum %= 30;
if (i == lena && carry) {
cout << carry;
} else {
cout << (char)(sum < 10 ? sum+'0' : sum-10+'a');
}
}
return 0;
}
阅读全文