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;
}