All submissions

Compress Interleaved Bits Reverse Bit Spreading

Code

#include <stdio.h>
#include <stdint.h>
#include<math.h>
uint8_t compress_bits(uint16_t val) {
    // Your logic here
    int arr[16];
    int index=0;
    while(val>0){
        int y=val%2;
        arr[index]=y;
        val/=2;
        index++;
    }
    if(index<16){
        for(int i=0;i<16-index;i++){
            arr[index]=0;
            index++;
        }
    }
    int w[16],temp=0;
    for(int i=index-1;i>=0;i--){
        w[temp]=arr[i];
        temp++;
    }
    int dec=0,count=0;
    for(int i=0;i<temp;i++){
        if(i%2==0){
            dec+=arr[i]*pow(2,count);
            count++;
        }
    }
    return dec;
}

int main() {
    uint16_t val;
    scanf("%hu", &val);

    uint8_t result = compress_bits(val);
    printf("%u", result);
    return 0;
}

Solving Approach

 

simple binary to decimial conversion and array concepts helped me to solve the problem

 

Loading...

Input

20548

Expected Output

202