Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Sense.exe

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.005 second

Submitted On: 2026-10-01 18:44:36

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

int main() {
    int b;
    string s1,s2;
    cin >> b >> s1 >> s2;
    //base->10
    long long b10_1=0,b10_2=0;
    long long pw=1;
    for(int i=s1.length()-1; i>=0; i--) {
        if(s1[i]>='A'&&s1[i]<='Z') {
            b10_1 += (s1[i]-55)*pw;
        }
        else {
            b10_1 += (s1[i]-'0')*pw;
        }
        pw*=b;
    }
    pw=1;
    for(int i=s2.length()-1; i>=0; i--) {
        if(s2[i]>='A'&&s2[i]<='Z') {
            b10_2 += (s2[i]-55)*pw;
        }
        else {
            b10_2 += (s2[i]-'0')*pw;
        }
        pw*=b;
    }
    //plus
    long long sum=b10_1+b10_2;
    if(sum==0){
        cout << 0;
        return 0;
    }
    //10 -> base
    vector<int> v;
    while(sum>0) {
        v.push_back(sum%b);
        sum/=b;
    }
    //print
    reverse(v.begin(),v.end());
    for(int i=0; i<v.size(); i++) {
        if(v[i]>=10) {
            cout << char(v[i]+55);
        }
        else {
            cout << v[i];
        }
    }
}



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

// int main() {
//     int b;
//     string s1,s2;
//     cin >> b >> s1 >> s2;
//     vector<int> v;
//     //base -> 10
//     long long b10_1=0,b10_2=0;
//     long long pw=1;
//     for(int i=s1.length()-1; i>=0; i--) {
//         if(s1[i]>='A'&&s1[i]<='Z') {
//             s1[i] = s1[i]-55;
//             b10_1 += (s1[i])*pw;
//         }
//         else {
//             b10_1 += (s1[i]-'0')*pw; //ตอนแรก b10_1 = s1[i]*pow(b,i); เลยผิด
//         }
//         pw*=b;
//     }
    
//     long long pw2=1;
//     for(int i=s2.length()-1; i>=0; i--) {
//         if(s2[i]>='A'&&s2[i]<='Z') {
//             s2[i] = s2[i]-55;
//             b10_2 += (s2[i])*pw2;
//         }
//         else {
//             b10_2 += (s2[i]-'0')*pw2;
//         }
//         pw2*=b;
//     }
    
//     //plus
//     long long sum10 = b10_1 + b10_2;
//     if (sum10 == 0) {
//         cout << 0;
//         return 0;
//     }
//     //10 -> base
//     while(sum10>0) {
//         v.push_back(sum10%b);
//         sum10/=b;
//     }
//     reverse(v.begin(),v.end());
//     //print and change a-z -> 10
//     for(auto x:v) {
//         if(x>=10) {
//             cout << char(x+55);
//         }
//         else {
//             cout << x;
//         }
//     }
// }