3369 - 火星上的加法运算

最近欢欢看到一本有关火星的书籍,其中她被一个加法运算所困惑,由于她的运算水平有限,她想向你求助,作为一位优秀的程序员,你当然不会拒绝。


<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;
}

提示

上传者:吕红波

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题