#include <stdio.h>
#include <stdint.h>
void print_base(uint16_t num, uint8_t base) {
int size = base == 2 ? 16 : 4;
char buffer[size];
if(num == 0) {
putchar('0');
return;
}
if(base == 2) {
for(int i = 0; i < size; i++) {
buffer[i] = (num&0x01)+'0';
num = num >> 1;
}
} else {
for(int i = 0; i < size; i++) {
uint8_t nibble = num & 0x0f;
buffer[i] = (nibble < 10) ? nibble + '0' : nibble - 10 + 'A';
num = num >> 4;
}
}
int p = 0;
for (int i = size-1; i >= 0; i--) {
if(buffer[i] == '1' || (buffer[i] >= 'A' && buffer[i] <= 'F')) p = 1;
if(p) putchar(buffer[i]);
}
}
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