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