Submission
Status:
PPPPPPPPP
Score: 100
User: Nathlol2
Problemset: บวกเลขฐาน
Language: cpp
Time: 0.003 second
Submitted On: 2024-10-04 14:25:02
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
int ConvertToBase10(char *p, int n, int base){
int sum = 0;
int mult = n - 1;
for(int i = 0;i<n;i++){
int placevalue = 0;
if(p[i] == 'A'){
placevalue = 10;
}else if(p[i] == 'B'){
placevalue = 11;
}else if(p[i] == 'C'){
placevalue = 12;
}else if(p[i] == 'D'){
placevalue = 13;
}else if(p[i] == 'E'){
placevalue = 14;
}else if(p[i] == 'F'){
placevalue = 15;
}else{
placevalue = p[i] - '0';
}
sum = sum + (pow(base, mult) * placevalue);
mult--;
}
return sum;
}
void printBase(int n, int base){
if(n == 0){
cout << "0";
}
char num[500];
int cnt = 0;
int r = 499;
while(n > 0){
int rem = n % base;
n = n - rem;
n = n / base;
if(rem == 10){
num[r] = 'A';
}else if(rem == 11){
num[r] = 'B';
}else if(rem == 12){
num[r] = 'C';
}else if(rem == 13){
num[r] = 'D';
}else if(rem == 14){
num[r] = 'E';
}else if(rem == 15){
num[r] = 'F';
}else{
num[r] = '0' + rem;
}
r = r - 1;
}
for(int i = r + 1;i<500;i++){
cout << num[i];
}
}
int main(){
int base;
char n1[500];
char n2[500];
cin >> base >> n1 >> n2;
int len1 = strlen(n1);
int len2 = strlen(n2);
int t1 = ConvertToBase10(n1, len1, base);
int t2 = ConvertToBase10(n2, len2, base);
int sum = t1 + t2;
printBase(sum, base);
}