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;
// }
// }
// }