Submission
Status:
PPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: loop
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-10 18:30:52
#include <iostream>
#include <string>
using namespace std;
int val(char c) {
if (c >= '0' && c <= '9') return c - '0';
if (c >= 'a' && c <= 'z') return c - 'a' + 10;
return c - 'A' + 10;
}
int main() {
const char *DIG = "0123456789ABCDEF";
int base;
string a, b;
cin >> base >> a >> b;
string r = "";
int i = (int)a.size() - 1, j = (int)b.size() - 1, carry = 0;
while (i >= 0 || j >= 0 || carry) {
int d = carry;
if (i >= 0) d += val(a[i--]);
if (j >= 0) d += val(b[j--]);
r = DIG[d % base] + r;
carry = d / base;
}
while (r.size() > 1 && r[0] == '0') r.erase(0, 1);
cout << r << '\n';
return 0;
}