3369 - 火星上的加法运算
时间限制 : 1 秒
内存限制 : 128 MB
最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限,她想向你求助,作为一位优秀的程序员,你当然不会拒绝。
<br />
<br />
题目输入
第一行先输入一个运算的进制N(2<=N<=36),接下来的两行为需要进行运算的字符,其中每个字符串的长度不超过200位.其为N进制的数。其中包括0-9及a-z(代表10-35).
题目输出
在N进制下它们的和.
输入/输出样例
输入格式
20 1234567890 abcdefghij
输出格式
bdfi02467j
C++解答
#include <bits/stdc++.h> using namespace std; const int N = 210; int a[N], b[N], c[N], n; void convert(int a[], string s) { int len = s.size(); for (int i = 0; i < len; i++) if (s[i] >= '0' && s[i] <= '9') a[len-i-1] = s[i] - '0'; else a[len-i-1] = s[i] - 'a' + 10; } int main() { cin >> n; string s1, s2; cin >> s1 >> s2; int len1 = s1.size(); int len2 = s2.size(); convert(a, s1); convert(b, s2); int len = max(len1, len2); int t = 0; for (int i = 0; i < len; i++) { t += a[i] + b[i]; c[i] = t % n; t /= n; } if (t > 0) c[len++] = t; for (int i = len - 1; i >= 0; i--) if (c[i] >= 10) cout << char(c[i] + 'a' - 10); else cout << c[i]; return 0; }