Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Selected Reading
Largest number less than X having at most K set bits in C++
In this tutorial, we are going to write a program that finds the largest number which is less than given x and should have at most k set bits.
Let's see the steps to solve the problem.
- Initialise the numbers x and k.
- Find the set bits in the number x.
- Write a loop that iterates set bits count of x - k.
- Update the value of x with x & (x - 1).
- Return x.
Example
Let's see the code.
#include <bits/stdc++.h>
using namespace std;
int largestNumberWithKBits(int x, int k) {
int set_bit_count = __builtin_popcount(x);
if (set_bit_count <= k) {
return x;
}
int diff = set_bit_count - k;
for (int i = 0; i < diff; i++) {
x &= (x - 1);
}
return x;
}
int main() {
int x = 65, k = 2;
cout << largestNumberWithKBits(x, k) << endl;
return 0;
}
Output
If you run the above code, then you will get the following result.
65
Conclusion
If you have any queries in the tutorial, mention them in the comment section.
Advertisements
