Submission

Status:

PPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: Whatthepoop

Problemset: บวกเลขฐาน

Language: c

Time: 0.001 second

Submitted On: 2025-10-10 23:48:36

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


int charToVal(char c) {
    if(c >= '0' && c <= '9') {
        return c - '0';
    } else {
        return c - 'A' + 10;
    }
}


char valToChar(int v) {
    if(v >= 0 && v <= 9) {
        return '0' + v;
    } else {
        return 'A' + (v - 10);
    }
}

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

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

    int i = strlen(num1) - 1;
    int j = strlen(num2) - 1;
    int carry = 0;

    char result[110];
    int k = 0;


    while(i >= 0 || j >= 0 || carry > 0) {
        int x = 0;
        int y = 0;
        if(i >= 0) {
            x = charToVal(num1[i]);
        }
        if(j >= 0) {
            y = charToVal(num2[j]);
        }

        int sum = x + y + carry;
        carry = sum / base;
        sum = sum % base;
        result[k] = valToChar(sum);
        k++;

        i--;
        j--;
    }


    for(int a = 0; a < k / 2; a++) {
        char t = result[a];
        result[a] = result[k - 1 - a];
        result[k - 1 - a] = t;
    }
    
    result[k] = '\0';

    printf("%s\n", result);

    return 0;
}