Problem Link

Description


You are given a positive integer n.

Let even denote the number of even indices in the binary representation of n with value 1.

Let odd denote the number of odd indices in the binary representation of n with value 1.

Note that bits are indexed from right to left in the binary representation of a number.

Return the array [even, odd].

 

Example 1:

Input: n = 50

Output: [1,2]

Explanation:

The binary representation of 50 is 110010.

It contains 1 on indices 1, 4, and 5.

Example 2:

Input: n = 2

Output: [0,1]

Explanation:

The binary representation of 2 is 10.

It contains 1 only on index 1.

 

Constraints:

  • 1 <= n <= 1000

Solution


Python3

class Solution:
    def evenOddBit(self, n: int) -> List[int]:
        res = [0, 0]
        b = bin(n)[2:]
        
        for i, x in enumerate(b[::-1]):
            if x == "1":
                if i % 2 == 0:
                    res[0] += 1
                else:
                    res[1] += 1
        
        return res