Submission

Status:
PPPPPPP-P

Score: 96

User: Nathlol2

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.003 second

Submitted On: 2024-10-04 14:16:14

#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){
    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);
}