Given a number n, count number of integers smaller than or equal to n that have odd number of set bits.
Input : 5 Output : 3 Explanation : Integers with odd number of set bits in range 1 to 5 : 0 contains 0 set bits 1 contains 1 set bits 2 contains 1 set bits 3 contains 2 set bits 4 contains 1 set bits 5 contains 2 set bits Input : 10 Output : 5 Explanation : Integers with odd set bits are 1, 2, 4, 7 and 8.
Prerequisites : Count number of set bits
The idea is based on below fact.
If n is odd then there are total n+1 integers smaller than or equal to n (0, 1, 2 … n) and half of these integers contain odd number of set bits.
How to handle case when n is even? We know result for n-1. We count set bits in n and add 1 to n/2 if the count is odd. Else we return n/2.
# Python 3 code to find numbers with
# odd number of set bits
# function that returns the number
# of integers with odd number of
# set bits
# If n is odd, then half of the
# integers in (0, 1, .. n) contain
# odd number of set bits.
if (n % 2 != 0):
return (n + 1) / 2
# If n is even, we know result for
# n-1. We explicitly compute set
# bit count in n.
count = bin(n).count(‘1’)
ans = n / 2
if (count % 2 != 0):
ans += 1
# Driver code
if __name__ == ‘__main__’:
n = 10
# This code is contributed by
- Number of mismatching bits in the binary representation of two integers
- Check if bits of a number has count of consecutive set bits in increasing order
- Maximize a given unsigned number number by swapping bits at it's extreme positions.
- Check if a number has same number of set and unset bits
- Toggle bits of a number except first and last bits
- Next higher number with same number of set bits
- Minimum number using set bits of a given number
- M-th smallest number having k number of set bits.
- Set all odd bits of a number
- Same Number Of Set Bits As N
- Set all even bits of a number
- Number with set bits only between L-th and R-th index
- Largest number less than X having at most K set bits
- Set all the bits in given range of a number
- Toggle all odd bits of a number
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.