Submission
Status:
PPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: Alif_Sama
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.002 second
Submitted On: 2025-10-09 20:10:39
#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 (num1 == "0" && num2 == "0") {
cout << "0";
return 0;
}
int num1_B10 = tobase10(n,num1);
int num2_B10 = tobase10(n,num2);
int res = num1_B10 + num2_B10;
tobaseN(n,res);
}