Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: goine

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-11 22:12:23

#include<bits/stdc++.h>
using namespace std;

map<char, int> trans = {
	{'0', 0},
	{'1', 1},
	{'2', 2},
	{'3', 3},
	{'4', 4},
	{'5', 5},
	{'6', 6},
	{'7', 7},
	{'8', 8},
	{'9', 9},
	{'A', 10},
	{'B', 11},
	{'C', 12},
	{'D', 13},
	{'E', 14},
	{'F', 15}
};

map<int, char> _trans = {
	{0, '0'},
	{1, '1'},
	{2, '2'},
	{3, '3'},
	{4, '4'},
	{5, '5'},
	{6, '6'},
	{7, '7'},
	{8, '8'},
	{9, '9'},
	{10, 'A'},
	{11, 'B'},
	{12, 'C'},
	{13, 'D'},
	{14, 'E'},
	{15, 'F'}
};

int main() {
	int base;
	string num1;
	string num2;
	
	cin >> base >> num1 >> num2;
	if (base < 2 || base > 16) return 1;

	int sum1 = 0;
	int sum2 = 0;

	for (int i = 0; i < num1.length(); i++) {
		sum1 *= base;
		sum1 += trans[num1[i]];
	}

	for (int i = 0; i < num2.length(); i++) {
		sum2 *= base;
		sum2 += trans[num2[i]];
	}

	int sum = sum1 + sum2;
	string output = "";
	
	while (sum > 0) {
		int mod = sum % base;
		output += _trans[mod];
		sum /= base;
	}

	reverse(output.begin(), output.end());
	if (output.empty()) output = "0";

	cout << output << '\n';

	return 0;
}