#include <stdio.h>
#include <stdint.h>
void print_base(uint16_t num, uint8_t base) {
// Your logic here
char out[17];
char *ptr = out;
if (base == 2) {
if (num) {
for (int i = 15; i>=0; i--)
if ((num>>i) >= 1)
*(ptr++) = ((num >> i) & 0x01) + '0';
}
else *(ptr++) = '0'; //num=0
} //base 2
else if (base == 16) { //base 16
if (num) {
//char hexd;
uint8_t val = 0;
for (int i = 3;i>=0;i--)
if (num>>(i*4)) {
val = (num>>(i*4)) & 0x0F;
*(ptr++) = (val < 10) ? ('0' + val) : ('A' + val - 10);
//*(ptr++) = ((num >> i) & 0x01) + '0';
}
}
else *(ptr++) = '0'; //num=0
}
*ptr = '\0'; //terminate
printf("%s",out);
}
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