알고리즘/codefights

18>arrayPacking

Diademata 2021. 4. 17. 16:49
반응형

You are given an array of up to four non-negative integers, each less than 256.

Your task is to pack these integers into one number M in the following way:

The first element of the array occupies the first 8 bits of M;
The second element occupies next 8 bits, and so on.
Return the obtained integer M.

Note: the phrase "first bits of M" refers to the least significant bits of M - the right-most bits of an integer. For further clarification see the following example.

Example

For a = [24, 85, 0], the output should be
arrayPacking(a) = 21784.

An array [24, 85, 0] looks like [00011000, 01010101, 00000000] in binary.
After packing these into one number we get 00000000 01010101 00011000 (spaces are placed for convenience), which equals to 21784.

 

code>>

 

int arrayPacking(vector<inta) {

    auto result = 0;

    for(int i=0ia.size(); ++i)

    {

        result += a[i] << i * 8;

    }

    return result;

}

 

반응형

'알고리즘 > codefights' 카테고리의 다른 글

19>rangeBitCount  (0) 2021.04.17
17>Kill K-th Bit  (0) 2021.04.17
Challenge>formatString  (0) 2019.03.06
Challenge>fibonacciIndex  (0) 2019.03.06
16>metroCard  (0) 2019.02.24