Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: wleo.lwo

Problemset: บวกเลขฐาน

Language: cpp

Time: 0.002 second

Submitted On: 2025-10-12 09:40:57

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

// ฟังก์ชันแปลงตัวอักษรฐานเป็นเลข 0-15
int value(char c) {
    if (c >= '0' && c <= '9')
        return c - '0';
    else if (c >= 'A' && c <= 'F')
        return c - 'A' + 10;
    else if (c >= 'a' && c <= 'f')
        return c - 'a' + 10;
    return -1;
}

// ฟังก์ชันแปลงเลข 0-15 กลับเป็นตัวอักษรฐาน
char toChar(int n) {
    if (n >= 0 && n <= 9)
        return n + '0';
    else
        return n - 10 + 'A';
}

int main() {
    int base;
    char num1[50], num2[50], result[60];
    int len1, len2, i, j, k, carry = 0;

    
    scanf("%d", &base);
    scanf("%s", num1);
    scanf("%s", num2);

    len1 = strlen(num1);
    len2 = strlen(num2);
    i = len1 - 1;
    j = len2 - 1;
    k = 0;

    // บวกเลขทีละหลักจากขวาไปซ้าย
    while (i >= 0 || j >= 0 || carry > 0) {
        int digit1 = (i >= 0) ? value(num1[i]) : 0;
        int digit2 = (j >= 0) ? value(num2[j]) : 0;

        int sum = digit1 + digit2 + carry;
        carry = sum / base;
        sum %= base;

        result[k++] = toChar(sum);

        i--;
        j--;
    }


    for (int x = k - 1; x >= 0; x--)
        printf("%c", result[x]);
    printf("\n");

    return 0;
}