Submission

Status:

---------

Subtask/Task Score:

0/100

Score: 0

User: angpangSK

Problemset: บวกเลขฐาน

Language: c

Time: 0.003 second

Submitted On: 2025-09-23 12:03:23

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

void convert_to_base(int num, int base, char* result) {
    int i = 0;
    char digits[] = "0123456789ABCDEF";
    if (num == 0) {
        result[i++] = '0';
    }
    while (num > 0) {
        result[i++] = digits[num % base];
        num /= base;
    }
    result[i] = '\0';

    for (int j = 0; j < i / 2; j++) {
        char temp = result[j];
        result[j] = result[i - j - 1];
        result[i - j - 1] = temp;
    }
}

int convert_to_base10(const char* num_str, int base) {
    int num_base10 = 0;
    int length = strlen(num_str);
    
    for (int i = 0; i < length; i++) {
        char digit = num_str[length - 1 - i];
        int value = (digit >= '0' && digit <= '9') ? (digit - '0') : (digit - 'A' + 10);
        num_base10 += value * pow(base, i);
    }
    return num_base10;
}

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

    char num1[100], num2[100];
    printf("Num1: ");
    scanf("%s", num1);
    printf("Num2: ");
    scanf("%s", num2);

    if (base < 2 || base > 16) {
        printf("Invalid base\n");
        return 0;
    }

    int num1_base10 = convert_to_base10(num1, base);
    int num2_base10 = convert_to_base10(num2, base);

    int sum = num1_base10 + num2_base10;

    char sum_base[100];
    convert_to_base(sum, base, sum_base);

    printf("OUTPUT %s\n", sum_base);

    return 0;
}