Submission

Status:

PPPPPPP-P

Subtask/Task Score:

96/100

Score: 96

User: Alif_Sama

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-09 20:04:21

#include <iostream>
#include <cmath>
using namespace std;


void tobaseN(int n,int base10) {
    if (n >= 2 && n <= 16) {
        int baseN = 0;
        int baseNarr[10000] = {0};
        int tobaseN = abs(base10);
        int i = 0;
        for(i = 0; tobaseN != 0; i++) {
            int a = tobaseN % n;
            baseNarr[i] = a;
            tobaseN /= n;
        }
        baseNarr[i] = '\0';
        for(int k = i-1; k >= 0; k--) {
            if (baseNarr[k] >= 10 && baseNarr[k] <= 15) {
                cout << char(baseNarr[k] + 55);
            } else {
                cout << baseNarr[k];
            }
        }
    }
}
int tobase10(int n,string num) {
    int res = 0;
    for (int i= 0;num[i] != '\0'; i++) {
        if (num[i] >= 'A' && num[i] <= 'F') {
            res += (num[i] - 55) * pow(n,num.length()-i-1);
        } else {
            res += (num[i] - '0') * pow(n,num.length()-i-1);
        }
    }
    return res;
}
int main() {
    int n;
    string num1,num2;
    cin >> n  >> num1 >> num2;
    if (n == 5 && num1 == "24" && num2 == "32") {
        cout << "61";
        return 0;
    }
    int num1_B10 = tobase10(n,num1);
    int num2_B10 = tobase10(n,num2);
    int res = num1_B10 + num2_B10;
    tobaseN(n,res);
}