Submission

Status:

------PxP

Subtask/Task Score:

24/100

Score: 24

User: Newton4566

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.004 second

Submitted On: 2026-09-25 11:47:49

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

string toBase(long long n, int b) {
    if (n == 0) return 0;
    string digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    string s;
    bool neg = n < 0; //check if n < 0?
    if (neg) n = -n; //if n < 0, make it become positive
    while (n > 0) {
        s += digits[n % b];
        n /= b;
    }
    if (neg) s += '-';
    reverse(s.begin(), s.end());

    return s;
}

long long fromBase(const string& s, int b) {
    long long result = 0;
    size_t i = 0;
    bool neg = false;

    if (!s.empty() && s[0] == '-') {
        neg = true;
        i = 1;
    }

    for (; i < s.size(); i++) {
        char c = s[i];
        int d;
        if (c >= '0' && c <= '9') d = c - '0';
        else d = c - 'A'  + 10;
        result = result * b + d;
    }

    return neg ? -result : result;
}

int main() {
    int base;
    string n1, n2;
    cin >> base >> n1 >> n2;

    int sum = fromBase(n1, base) + fromBase(n2, base);
    cout << toBase(sum, 5);

    return 0;
}