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

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:**

Input:N = 5, K = 1Output:YESExplanation:Binary of 5 is 101. The 1's are 1 place far from each other.Input:N = 10, K = 2Output:NOExplanation:Binary of 10 is 1010. The 1's are not at least 2 places far from each other.

**Approach:**

- Iterate Over all the bits in the binary representation of N and maintain a variable ‘count’ initialize to 0.
- Whenever you find a set bit(1), check if count <= K. If not return false.
- 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 <bits/stdc++.h>` `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` |

**Output:**

YES

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.