Submission
Status:
-------P-
Subtask/Task Score:
12/100
Score: 12
User: Sense.exe
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.004 second
Submitted On: 2026-10-01 15:35:50
#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;
//10 -> base
while(sum10>0) {
v.push_back(sum10%b);
sum10/=b;
}
reverse(v.begin(),v.end());
//print and change a-z -> 10
if (sum10 == 0) {
cout << 0;
return 0;
}
for(auto x:v) {
if(x>=10) {
cout << char(x+55);
}
else {
cout << x;
}
}
}