Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Peam

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2025-10-09 12:35:46

#include <stdio.h>
#include <string.h>

int main(){
    int base;
    scanf("%d", &base); //input base

    char s1[100], s2[100];
    scanf("%s%s", s1, s2);

    if(s1[0] == '0' && s2[0] == '0'){
        printf("0");
        return 0;
    }

    //to base 10
    int ans1 = 0, ans2 = 0;
    for(int i = 0; s1[i] != '\0'; i++){
        if(s1[i] >= 'A' && s1[i] <= 'Z'){
            ans1 = base * ans1 + (s1[i] - 'A' + 10);
        }
        else{
            ans1 = base * ans1 + (s1[i] - '0');
        }
    }

    for(int i = 0; s2[i] != '\0'; i++){
        if(s2[i] >= 'A' && s2[i] <= 'Z'){
            ans2 = base * ans2 + (s2[i] - 'A' + 10);
        }
        else{
            ans2 = base * ans2 + (s2[i] - '0');
        }
    }

    //sum in base 10
    int sum = ans1 + ans2;

    //convert back to origninal base
    int final_answer[100];
    int idx = 0;
    int len = 0;
    while(sum > 0){
        final_answer[idx++] = sum % base;
        sum /= base;
        len++;
    }
    // 11 + 55 -> 66 -> B
    // printf("ans1: %d\nans2: %d", ans1, ans2);
    for(int i = len - 1; i >= 0; i--){
        if(final_answer[i] >= 10 && final_answer[i] <= 15){
            printf("%c", final_answer[i] + 55);
        }
        else{
            printf("%d", final_answer[i]);
        }
    }

    return 0;
}