Day 6: Bitwise Operators | 10 Days Of JavaScript | HackerRank Solution

Hello coders, today we are going to solve Day 6: Bitwise Operators HackerRank Solution which is a part of 10 Days of JavaScript Series.

Day 6: Bitwise Operators

Objective

Today, we’re practicing bitwise operations.

Task

We define S to be a sequence of distinct sequential integers from 1 to n; in other words, S = {1, 2, 3, . . ., n}. We want to know the maximum bitwise AND value of any two integers, a and b (where a < b), in sequence S that is also less than a given integerk.

Complete the function in the editor so that given n and k, it returns the maximum a & b < k .

Note: The & symbol represents the bitwise AND operator.

Input Format

The first line contains an integer, q, denoting the number of function calls.
Each of the q subsequent lines defines a dataset for a function call in the form of two space-separated integers describing the respective values of n and k.

Constraints

  • 1 <= q <= 10^3
  • 2 <= n <= 10^3
  • 2 <= k <= n

Output Format

Return the maximum possible value of a & b < k for any a < b in sequence S.

Sample Input 0

3
5 2
8 5
2 2

Sample Output 0

1
4
0

Explanation 0

We perform the following q = 3 function calls:

  1. When n = 5 and k = 2, we have the following possible a and b values in set S = {1, 2, 3, 4, 5}:The maximum of any a & b that is also < k is 1, so we return 1.
  2. When n = 8 and k = 5, the maximum of any a & b < k in set S = {1, 2, 3, 4, 5, 6, 7, 8} is 4, so we return 4.
  3. When n = 2 and k = 2, the maximum of any a & b < k in set S = {1, 2} is 0 (see table above), so we return 0.

Sample Input 1

2
9 2
8 3

Sample Output 1

1
2

Explanation 1

We perform the following q = 2 function calls:

  1. When n = 9 and k = 2, the maximum of any a & b < k in set S = {1, 2, 3, 4, 5, 6, 7, 8, 9} is 1, so we return 1.
  2. When  n = 8 and k = 3, the maximum of any a & b < k in set S = {1, 2, 3, 4, 5, 6, 7, 8} is 2, so we return 2.

Solution – Day 6: Bitwise Operators

'use strict';

process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
    inputString += inputStdin;
});

process.stdin.on('end', _ => {
    inputString = inputString.trim().split('\n').map(string => {
        return string.trim();
    });
    
    main();    
});

function readLine() {
    return inputString[currentLine++];
}

function getMaxLessThanK(n, k){
    var maxi = 0;
    var curr = -1;
    
    for (var i = 0; i < n ; i++){
        for (var j = i + 1; j <= n; j++){
            curr = i & j ;
            if (curr < k && curr > maxi){
                maxi = curr;
            }
        }
    }
    return maxi;
}


function main() {
    const q = +(readLine());
    
    for (let i = 0; i < q; i++) {
        const [n, k] = readLine().split(' ').map(Number);
        
        console.log(getMaxLessThanK(n, k));
    }
}

Disclaimer: The above Problem (Bitwise Operators) is generated by Hacker Rank but the Solution is Provided by CodingBroz. This tutorial is only for Educational and Learning Purpose.

Leave a Comment

Your email address will not be published. Required fields are marked *