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