# Count set bits in the Kth number after segregating even and odd from N natural numbers

Given two integers N and K, the task is to find the count of set bits in the Kth number in the Odd-Even sequence made of the number from the range [1, N]. The Odd-Even sequence first contains all the odd numbers from 1 to N and then all the even numbers from 1 to N.
Examples:

Input: N = 8, K = 4
Output:
The sequence is 1, 3, 5, 7, 2, 4, 6 and 8.
4th element is 7 and the count
of set bits in it is 3.
Input: N = 18, K = 12
Output:

Approach: An approach to find the Kth element of the required sequence has been discussed in this article. So, find the required number and then use __builtin_popcount() to find the count of set bits in it.
Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach``#include ``using` `namespace` `std;` `// Function to return the kth element``// of the Odd-Even sequence``// of length n``int` `findK(``int` `n, ``int` `k)``{``    ``int` `pos;` `    ``// Finding the index from where the``    ``// even numbers will be stored``    ``if` `(n % 2 == 0) {``        ``pos = n / 2;``    ``}``    ``else` `{``        ``pos = (n / 2) + 1;``    ``}` `    ``// Return the kth element``    ``if` `(k <= pos) {``        ``return` `(k * 2 - 1);``    ``}``    ``else` `        ``return` `((k - pos) * 2);``}` `// Function to return the count of``// set bits in the kth number of the``// odd even sequence of length n``int` `countSetBits(``int` `n, ``int` `k)``{` `    ``// Required kth number``    ``int` `kth = findK(n, k);` `    ``// Return the count of set bits``    ``return` `__builtin_popcount(kth);``}` `// Driver code``int` `main()``{``    ``int` `n = 18, k = 12;` `    ``cout << countSetBits(n, k);` `    ``return` `0;``}`

## Java

 `// Java implementation of the approach ``class` `GFG``{``    ` `    ``// Function to return the kth element ``    ``// of the Odd-Even sequence ``    ``// of length n ``    ``static` `int` `findK(``int` `n, ``int` `k) ``    ``{ ``        ``int` `pos; ``    ` `        ``// Finding the index from where the ``        ``// even numbers will be stored ``        ``if` `(n % ``2` `== ``0``) ``        ``{ ``            ``pos = n / ``2``; ``        ``} ``        ``else``        ``{ ``            ``pos = (n / ``2``) + ``1``; ``        ``} ``    ` `        ``// Return the kth element ``        ``if` `(k <= pos) ``        ``{ ``            ``return` `(k * ``2` `- ``1``); ``        ``} ``        ``else``            ``return` `((k - pos) * ``2``); ``    ``} ``    ` `    ``// Function to return the count of ``    ``// set bits in the kth number of the ``    ``// odd even sequence of length n ``    ``static` `int` `countSetBits(``int` `n, ``int` `k) ``    ``{ ``    ` `        ``// Required kth number ``        ``int` `kth = findK(n, k); ``        ` `        ``int` `count = ``0``; ``        ` `        ``while` `(kth > ``0``) ``        ``{ ``            ``count += kth & ``1``; ``            ``kth >>= ``1``; ``        ``} ``        ` `        ``// Return the count of set bits ``        ``return` `count;``    ``} ``    ` `    ``// Driver code ``    ``public` `static` `void` `main (String[] args)``    ``{ ``        ``int` `n = ``18``, k = ``12``; ``    ` `        ``System.out.println(countSetBits(n, k)); ``    ``} ``}` `// This code is contributed by AnkitRai01`

## Python3

 `# Python3 implementation of the approach ` `# Function to return the kth element ``# of the Odd-Even sequence ``# of length n ``def` `findK(n, k) :``    ` `    ``# Finding the index from where the ``    ``# even numbers will be stored ``    ``if` `(n ``%` `2` `=``=` `0``) :``        ``pos ``=` `n ``/``/` `2``; ``    ``else` `:``        ``pos ``=` `(n ``/``/` `2``) ``+` `1``; ` `    ``# Return the kth element ``    ``if` `(k <``=` `pos) :``        ``return` `(k ``*` `2` `-` `1``); ``    ``else` `:``        ``return` `((k ``-` `pos) ``*` `2``); ` `# Function to return the count of ``# set bits in the kth number of the ``# odd even sequence of length n ``def` `countSetBits( n, k) :``    ` `    ``# Required kth number ``    ``kth ``=` `findK(n, k);``    ` `    ``# Return the count of set bits``    ``return` `bin``(kth).count(``'1'``); ` `# Driver code ``if` `__name__ ``=``=` `"__main__"` `:``    ``n ``=` `18``; k ``=` `12``;``    ``print``(countSetBits(n, k)); ` `# This code is contributed by kanugargng`

## C#

 `// C# implementation of the above approach ``using` `System;` `class` `GFG``{``    ` `    ``// Function to return the kth element ``    ``// of the Odd-Even sequence ``    ``// of length n ``    ``static` `int` `findK(``int` `n, ``int` `k) ``    ``{ ``        ``int` `pos; ``    ` `        ``// Finding the index from where the ``        ``// even numbers will be stored ``        ``if` `(n % 2 == 0) ``        ``{ ``            ``pos = n / 2; ``        ``} ``        ``else``        ``{ ``            ``pos = (n / 2) + 1; ``        ``} ``    ` `        ``// Return the kth element ``        ``if` `(k <= pos) ``        ``{ ``            ``return` `(k * 2 - 1); ``        ``} ``        ``else``            ``return` `((k - pos) * 2); ``    ``} ``    ` `    ``// Function to return the count of ``    ``// set bits in the kth number of the ``    ``// odd even sequence of length n ``    ``static` `int` `countSetBits(``int` `n, ``int` `k) ``    ``{ ``    ` `        ``// Required kth number ``        ``int` `kth = findK(n, k); ``        ` `        ``int` `count = 0; ``        ` `        ``while` `(kth > 0) ``        ``{ ``            ``count += kth & 1; ``            ``kth >>= 1; ``        ``} ``        ` `        ``// Return the count of set bits ``        ``return` `count;``    ``} ``    ` `    ``// Driver code ``    ``public` `static` `void` `Main (String[] args)``    ``{ ``        ``int` `n = 18, k = 12; ``    ` `        ``Console.WriteLine(countSetBits(n, k)); ``    ``} ``}` `// This code is contributed by PrinciRaj1992`

## Javascript

 ``

Output:
`2`

Time Complexity: O(1)

Auxiliary Space: O(1)

Previous
Next