Submission

Status:
---------

Score: 0

User: Jokul

Problemset: บวกเลขฐาน

Language: c

Time: 0.001 second

Submitted On: 2025-03-01 17:58:04

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

int convertToDecimal(const char *num, int base) {
    int decimalValue = 0;
    int length = strlen(num);

    for (int i = 0; i < length; i++) {
        char digit = num[length - 1 - i];
        int value;

        if (isdigit(digit)) {
            value = digit - '0'; // Convert character to integer
        } else {
            value = toupper(digit) - 'A' + 10; // Convert A-F to 10-15
        }

        decimalValue += value * (1 << (i * 4)); // base 16 is 2^4
    }

    return decimalValue;
}

void convertToBase(int num, int base, char *result) {
    char buffer[50];
    int index = 0;

    if (num == 0) {
        strcpy(result, "0");
        return;
    }

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

    // Reverse the buffer to get the correct order
    for (int i = 0; i < index; i++) {
        result[i] = buffer[index - 1 - i];
    }
    result[index] = '\0'; // Null-terminate the string
}

int main() {
    int base;
    char num1[50], num2[50];
    char result[50];

    // Input base
    printf("Base: ");
    scanf("%d", &base);

    // Check if base is valid
    if (base < 2 || base > 16) {
        printf("Base must be between 2 and 16.\n");
        return 1;
    }

    // Input two numbers
    printf("Num1: ");
    scanf("%s", num1);
    printf("Num2: ");
    scanf("%s", num2);

    // Convert numbers to decimal
    int decimalNum1 = convertToDecimal(num1, base);
    int decimalNum2 = convertToDecimal(num2, base);

    // Sum the numbers
    int sumDecimal = decimalNum1 + decimalNum2;

    // Convert the sum back to the original base
    convertToBase(sumDecimal, base, result);

    // Output the result
    printf("OUTPUT %s\n", result);

    return 0;
}