#include <stdio.h>
#include <stdint.h>
char to_hex(uint8_t n) {
char result;
if (n <= 9) {
result = '0' + n;
}
else {
result = 'A' + n - 10;
}
return result;
}
void print_base(uint16_t num, uint8_t base) {
char tmp_hex[5];
int i;
switch (base) {
case 16:
for (i = 3; i >= 0; --i) {
tmp_hex[i] = to_hex((num >> (4*i)) & 0x0f);
}
for (i = 3; tmp_hex[i] == '0' && i >= 1; --i);
for (;i >= 0; --i) {
printf("%c", tmp_hex[i]);
}
break;
case 2:
for (i = 15; (((num >> i) & 1) == 0) && i >= 1; --i);
for (;i >= 0; --i) {
printf("%c", ((num >> i) & 1) + '0');
}
break;
}
}
int main() {
uint16_t num;
uint8_t base;
scanf("%hu %hhu", &num, &base);
print_base(num, base);
return 0;
}
Input
10 2
Expected Output
1010