#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; }
Test Cases
Test Results
Input
10 2
Expected Output
1010