In this HackerEarth Set numbers problem solution, you are given the binary representation of a number. You must consider the highest number of set bits in the binary representation to complete your task. For example, 23 is represented as 10111 in binary and it contains four-set bits (1-bits). You are also given a number N and your task is to determine the number that is less than or equal to N and contains the maximum number of set bits in its binary representation. 

In other words, print a number K that is less than or equal to N such that the number of set bits in the binary representation of K must be maximum.


HackerEarth Set numbers problem solution


HackerEarth Set numbers problem solution.

#include "bits/stdc++.h"
using namespace std;

int main(){
int t; cin>>t;
while(t--)
{
int N; cin>>N;
int ans = 1;
for(int i=1; i<32; i++)
{
int num = pow(2, i) - 1;
if(num <= N)
{
ans = num;
}
}
cout<<ans<<"\n";
}
return 0;
}


Second solution

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 5e5 + 14;
int n;
int main(){
ios::sync_with_stdio(0), cin.tie(0);
int t;
cin >> t;
while(t--){
cin >> n;
for(ll x = 1ll << 31; x >= 0; x >>= 1)
if(x - 1 <= n){
cout << x - 1 << '\n';
break;
}
}
}