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;
      }
  }
}