#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// Converts a decimal number to its base-12 representation
char* decimalToBase12(int decimalNumber) {
if (decimalNumber == 0) {
// Special case for zero
char* zero = (char*)malloc(2);
strcpy(zero, "0");
}
const char digits[] = "0123456789AB"; // Base-12 digits (A = 10, B = 11)
char temp[64]; // Temporary buffer to build the number in reverse
int index = 0;
while (decimalNumber > 0) {
int remainder = decimalNumber % 12;
temp[index++] = digits[remainder];
decimalNumber /= 12;
}
// Reverse the string to get the correct order
char* base12 = (char*)malloc(index + 1);
for (int i = 0; i < index; ++i) {
base12[i] = temp[index - i - 1];
}
base12[index] = '\0';
return base12;
}
int main() {
int decimalNumber = 100;
char* base12Number = decimalToBase12(decimalNumber);
printf("Base-12 representation: %s\n", base12Number);
free(base12Number);
decimalNumber = 19621;
base12Number = decimalToBase12(decimalNumber);
printf("Base-12 representation: %s\n", base12Number);
free(base12Number);
return 0;
}
/*
run:
Base-12 representation: 84
Base-12 representation: B431
*/