B进制星球

· · 题解

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

int c_i(char c) {
    if (c >= '0' && c <= '9')
        return c - '0';
    else
        return c - 'A' + 10;
}

char i_c(int n) {
    if (n >= 10)
        return n - 10 + 'A';
    else
        return n + '0';
}

int main() {
    int r;
    string a, b, c = "";
    cin >> r >> a >> b;
    int la = a.size(), lb = b.size(), k = 0;
    if (la > lb)
        for (int i = 0; i < la - lb; i++)
            b = '0' + b;
    else
        for (int i = 0; i < lb - la; i++)
            a = '0' + a;
    int len = a.size();
    for (int i = len - 1; i >= 0; i--) {
        int t = c_i(a[i]) + c_i(b[i]) + k;
        k = t / r;
        t %= r;
        c = i_c(t) + c;
    }
    if (k != 0)
        c = '1' + c;
    cout << c;

    return 0;
}