Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Quinruj

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.003 second

Submitted On: 2025-10-02 15:48:46

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

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int base;cin>>base;
    string a,b,c;cin>>a>>b;
    unordered_map<char,int> mp;
    for (int i = 0;i<=6;i++) mp[char(65+i)] = 10+i;
    reverse(a.begin(),a.end());
    reverse(b.begin(),b.end());
    while (a.size() < b.size()) a += '0';
    while (a.size() > b.size()) b += '0';
    int k = 0;
    for (int i = 0;i<a.size();i++){
        int a_value,b_value;
        if (a[i] >= 'A' && a[i] <= 'F') a_value = mp[a[i]];
        else a_value = a[i]-'0';
        if (b[i] >= 'A' && b[i] <= 'F') b_value = mp[b[i]];
        else b_value = b[i]-'0';
        int sum = a_value+b_value+k;
        if (sum%base > 9) c += char(65+sum%base-10);
        else c += (sum%base+'0');
        k = sum/base;
    }
    if (k > 0) c += k+'0';
    reverse(c.begin(),c.end());
    cout << c;
}