Submission

Status:
---------

Score: 0

User: Jokul

Problemset: บวกเลขฐาน

Language: c

Time: 0.001 second

Submitted On: 2025-03-01 10:43:17

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

void addNumbersInBase(const char *num1, const char *num2, int base, char *result) {
    int len1 = strlen(num1);
    int len2 = strlen(num2);
    int carry = 0, index = 0;

    // Process each digit from the end
    for (int i = 0; i < len1 || i < len2 || carry; i++) {
        int digit1 = (i < len1) ? (isdigit(num1[len1 - 1 - i]) ? num1[len1 - 1 - i] - '0' : toupper(num1[len1 - 1 - i]) - 'A' + 10) : 0;
        int digit2 = (i < len2) ? (isdigit(num2[len2 - 1 - i]) ? num2[len2 - 1 - i] - '0' : toupper(num2[len2 - 1 - i]) - 'A' + 10) : 0;

        int sum = digit1 + digit2 + carry;
        carry = sum / base;
        result[index++] = (sum % base) < 10 ? (sum % base) + '0' : (sum % base - 10) + 'A';
    }

    result[index] = '\0';

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

int main() {
    int base;
    char num1[20], num2[20], result[21]; // +1 for possible carry

    // Input base and numbers
    printf("Base: ");
    scanf("%d", &base);
    printf("Num1: ");
    scanf("%s", num1);
    printf("Num2: ");
    scanf("%s", num2);

    // Add numbers in the specified base
    addNumbersInBase(num1, num2, base, result);

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

    return 0;
}