# Check if all the set bits of the binary representation of N are at least K places away

• Last Updated : 04 Jun, 2021

Given numbers N and K, The task to check if all the set bits of the binary representation of N are at least K places away.

Examples:

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

```Input: N = 5, K = 1
Output: YES
Explanation:
Binary of 5 is 101.
The 1's are 1 place far from each other.

Input: N = 10, K = 2
Output: NO
Explanation:
Binary of 10 is 1010.
The 1's are not at least 2 places far from each other.```

Approach:

1. Iterate Over all the bits in the binary representation of N and maintain a variable ‘count’ initialize to 0.
2. Whenever you find a set bit(1), check if count <= K. If not return false.
3. If you find a unset bit(0), increases the value of count by 1.

Below is the implementation of the above approach.

## C++

 `// C++ program to check if all the set``// bits of the binary representation``// of N are at least K places away.``#include ``using` `namespace` `std;` `bool` `CheckBits(``int` `N, ``int` `K)``{``    ``// Initialize check and count``    ``// with 0``    ``int` `check = 0;``    ``int` `count = 0;` `    ``for` `(``int` `i = 31; i >= 0; i--)``    ``{` `        ``// The i-th bit is a set bit``        ``if` `((1 << i) & N)``        ``{` `            ``// This is the first set bit so,``            ``// start calculating all the``            ``// distances between consecutive``            ``// bits from here``            ``if` `(check == 0)``            ``{``                ``check = 1;``            ``}``            ``else``            ``{``                ``// If count is less than K``                ``// return false``                ``if` `(count < K)``                ``{``                    ``return` `false``;``                ``}``            ``}``            ``count = 0;``        ``}``        ``else``        ``{``            ``// Adding the count as the``            ``// number of zeroes increase``            ``// between set bits``            ``count++;``        ``}``    ``}` `    ``return` `true``;``}``// Driver code``int` `main()``{` `    ``int` `N = 5;``    ``int` `K = 1;` `    ``if``(CheckBits(N, K))``    ``{``        ``cout << ``"YES"``;``    ``}``    ``else``    ``{``        ``cout << ``"NO"``;``    ``}`   `    ``return` `0;``}`

## Java

 `// Java program to check if all the set``// bits of the binary representation``// of N are at least K places away.``import` `java.util.*;` `class` `GFG{` `static` `boolean` `CheckBits(``int` `N, ``int` `K)``{``    ` `    ``// Initialize check and count``    ``// with 0``    ``int` `check = ``0``;``    ``int` `count = ``0``;` `    ``for``(``int` `i = ``31``; i >= ``0``; i--)``    ``{``        ` `        ``// The i-th bit is a set bit``        ``if` `(((``1` `<< i) & N) > ``0``)``        ``{``            ` `            ``// This is the first set bit so,``            ``// start calculating all the``            ``// distances between consecutive``            ``// bits from here``            ``if` `(check == ``0``)``            ``{``                ``check = ``1``;``            ``}``            ``else``            ``{``                ` `                ``// If count is less than K``                ``// return false``                ``if` `(count < K)``                ``{``                    ``return` `false``;``                ``}``            ``}``            ``count = ``0``;``        ``}``        ``else``        ``{``            ` `            ``// Adding the count as the``            ``// number of zeroes increase``            ``// between set bits``            ``count++;``        ``}``    ``}``    ``return` `true``;``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ``int` `N = ``5``;``    ``int` `K = ``1``;` `    ``if` `(CheckBits(N, K))``    ``{``        ``System.out.print(``"YES"``);``    ``}``    ``else``    ``{``        ``System.out.print(``"NO"``);``    ``}``}``}` `// This code is contributed by shikhasingrajput`

## Python3

 `# Python3 program to check if all the set``# bits of the binary representation``# of N are at least K places away.``def` `CheckBits(N, K):``    ` `    ``# Initialize check and count``    ``# with 0``    ``check ``=` `0``    ``count ``=` `0` `    ``for` `i ``in` `range``(``31``, ``-``1``, ``-``1``):` `        ``# The i-th bit is a set bit``        ``if` `((``1` `<< i) & N):` `            ``# This is the first set bit so,``            ``# start calculating all the``            ``# distances between consecutive``            ``# bits from here``            ``if` `(check ``=``=` `0``):``                ``check ``=` `1` `            ``else``:` `                ``# If count is less than K``                ``# return false``                ``if` `(count < K):``                    ``return` `False` `            ``count ``=` `0` `        ``else``:` `            ``# Adding the count as the``            ``# number of zeroes increase``            ``# between set bits``            ``count ``+``=` `1` `    ``return` `True` `# Driver code``if` `__name__ ``=``=` `"__main__"``:``    ` `    ``N ``=` `5``    ``K ``=` `1` `    ``if` `(CheckBits(N, K)):``        ``print``(``"YES"``)``    ``else``:``        ``print``(``"NO"``)` `# This code is contributed by chitranayal`

## C#

 `// C# program to check if all the set``// bits of the binary representation``// of N are at least K places away.``using` `System;``public` `class` `GFG{` `  ``static` `bool` `CheckBits(``int` `N, ``int` `K)``  ``{` `    ``// Initialize check and count``    ``// with 0``    ``int` `check = 0;``    ``int` `count = 0;` `    ``for``(``int` `i = 31; i >= 0; i--)``    ``{` `      ``// The i-th bit is a set bit``      ``if` `(((1 << i) & N) > 0)``      ``{` `        ``// This is the first set bit so,``        ``// start calculating all the``        ``// distances between consecutive``        ``// bits from here``        ``if` `(check == 0)``        ``{``          ``check = 1;``        ``}``        ``else``        ``{` `          ``// If count is less than K``          ``// return false``          ``if` `(count < K)``          ``{``            ``return` `false``;``          ``}``        ``}``        ``count = 0;``      ``}``      ``else``      ``{` `        ``// Adding the count as the``        ``// number of zeroes increase``        ``// between set bits``        ``count++;``      ``}``    ``}``    ``return` `true``;``  ``}` `  ``// Driver code` `  ``static` `public` `void` `Main ()``  ``{` `    ``int` `N = 5;``    ``int` `K = 1;` `    ``if` `(CheckBits(N, K))``    ``{``      ``Console.Write(``"YES"``);``    ``}``    ``else``    ``{``      ``Console.Write(``"NO"``);``    ``}`  `  ``}``}` `// This code is contributed by avanitrachhadiya2155`

## Javascript

 ``
Output:
`YES`

My Personal Notes arrow_drop_up