Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Chawin

Problemset: บวกเลขฐาน

Language: c

Time: 0.002 second

Submitted On: 2025-10-09 17:29:56

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

int toDecimal(char num[], int base){
    int power = 1;
    int value = 0;

    for(int i = strlen(num)-1; i>= 0; i--){
        int digit;
        if(isdigit(num[i])) digit = num[i]-'0';
        else digit = toupper(num[i]) - 'A' + 10;

        if (digit < 0 || digit >= base) return 0;

        value += digit*power;
        power *= base;
    }

    return value;
}

void fromDecimal(int num, int base, char result[]){
    if (num == 0) {       
        result[0] = '0';
        result[1] = '\0';
        return;
    }

    char temp[20];
    int i = 0;

    while(num > 0){
        int digit = num % base;
        if(digit < 10) temp[i++] = digit + '0';
        else temp[i++] = digit - 10 + 'A';
        num /= base;
    }

    for(int j = 0; j < i; j++){
        result[j] = temp[i - j - 1];
    }
    result[i] = '\0';
}

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

    char num1[20], num2[20];
    scanf("%s %s", num1, num2);

    int n1 = toDecimal(num1, base);
    int n2 = toDecimal(num2, base);
    int sum = n1+n2;

    char result[20];
    fromDecimal(sum, base, result);

    printf("%s", result);

    return 0;
}