#include <stdio.h>
#include <stdint.h>
void print2(uint16_t num)
{
uint8_t vec[16];
uint8_t len;
if(num == 0)
{
printf("0");
return;
}
while(num)
{
vec[len ++] = (num & 0x1);
num >>= 1;
}
for(int i = len - 1; i >= 0; i--)
{
printf("%d", vec[i]);
}
}
void printhex(uint16_t num)
{
uint8_t vec[16];
uint8_t len;
if(num == 0)
{
printf("0");
return;
}
while(num)
{
uint8_t elem = (num & 0xF);
if (elem < 10)
{
elem = elem + '0';
}
else if(elem == 10)
{
elem = 'A';
}
else if(elem == 11)
{
elem = 'B';
}
else if(elem == 12)
{
elem = 'C';
}
else if(elem == 13)
{
elem = 'D';
}
else if(elem == 14)
{
elem = 'E';
}
else if(elem == 15)
{
elem = 'F';
}
vec[len++] = elem;
num >>= 4;
}
for(int i = len - 1; i >= 0; i--)
{
printf("%c", vec[i]);
}
}
void print_base(uint16_t num, uint8_t base) {
// Your logic here
if(base == 2)
{
print2(num);
}
else
{
printhex(num);
}
}
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