#include <stdio.h>
#include <stdint.h>
void print_base(uint16_t num, uint8_t base) {
// Your logic here
if(num == 0){
printf("0");
return;
}
if(base == 2){
uint16_t mask = 1U << 15;
int counter = 0;
//remove padding zeros
while((mask & num) == 0){
mask = mask >> 1;
counter ++;
}
for(int i = 0; i< 16-counter; i++){
printf("%d", ((num&mask) != 0));
mask = mask >> 1;
}
return;
}
// base 16
uint16_t mask = 0xF000;
int counter = 0;
while( (mask & num) == 0){
mask = mask >> 4;
counter ++;
}
for( int i = counter; i< 4; i++){
uint16_t val = num&mask;
val = val >> 4*(3-counter);
mask = mask >> 4;
counter ++;
// printf("val: %d\n", val);
if(val <= 9){
printf("%d", val);
}else{
printf("%c", 'A'+(val-10));
}
}
}
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