# 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: 3
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: 2

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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 `

Output:

```2
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. 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.