In this HackerRank Day 29 Bitwise AND 30 days of code problem set, we have given a set S in which we need to find two integers A and B. such that the value of A and B is maximum possible and also less than a given integer K.
Problem solution in Python 2 programming.
#!/bin/python import sys t = int(raw_input().strip()) for a0 in xrange(t): n,k = raw_input().strip().split(' ') n,k = [int(n),int(k)] maxValue = 0 check = 0 for i in range(n-1,0,-1): for j in range(n,i,-1): tmp = i&j if ((tmp > maxValue)&(tmp < k)): maxValue = tmp if (maxValue + 1 == k): check = 1 break if (check == 1): break print maxValue
Problem solution in Python 3 programming.
#!/bin/python3 import math import os import random import re import sys def max_bit(n,k): maximum = 0 for i in range(1,n+1): for j in range(1,i): h = i & j if maximum < h < k: maximum = h if maximum == k-1: return maximum return maximum if __name__ == '__main__': t = int(input()) for t_itr in range(t): nk = input().split() n = int(nk[0]) k = int(nk[1]) print(max_bit(n,k))
Problem solution in java programming.
import java.io.*; import java.util.*; public class Solution { public static void main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ Scanner in = new Scanner(System.in); int q = in.nextInt(); for (int i = 0; i < q; i++) { int n = in.nextInt(); int k = in.nextInt(); int maxed = 0; for (int b = 2; b <= n; b++) { for (int a = 1; a < b; a++) { if (a == b) continue; int ab = a&b; if (ab > maxed && ab < k) maxed = ab; } } System.out.println(maxed); } } }
Problem solution in c++ programming.
#include <iostream> #include <vector> using namespace std; int main(){ int ncases, n, k, max = 0, tmp = 0; vector<int> range; range.reserve(1000); cin >> ncases; for(int i = 0; i < ncases; ++i){ cin >> n >> k; for(int j = 0; j < n; ++j) range.push_back(j + 1); for(int x = 0; x < range.size() - 1; ++x){ for(int y = x + 1; y < range.size(); ++y){ tmp = range[x] & range[y]; if(tmp < k) max = (tmp > max ? tmp : max); } } cout << max << 'n'; range.clear(); max = 0; } }
Problem solution in c programming.
#include <math.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> #include <limits.h> #include <stdbool.h> int maxvalue(int n, int k) { int i, j; int res = 0, max_res = 0; for (i = 1; i <= n; i++) { for (j = i+1; j <=n ; j++) { int val = i &j; if (val > max_res && val < k) { max_res = val; } } } return max_res; } int main(){ int t; int a0; scanf("%d",&t); for(a0 = 0; a0 < t; a0++){ int n; int k; scanf("%d %d",&n,&k); printf("%dn", maxvalue(n, k)); } return 0; }
Problem solution in Javascript programming.
process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function main() { var t = parseInt(readLine()); for(var a0 = 0; a0 < t; a0++){ var n_temp = readLine().split(' '); var n = parseInt(n_temp[0]); var k = parseInt(n_temp[1]); function findMaxPoss(arr) { var res = 0; for(var i = 0; i < arr.length; i++){ for(var j = i + 1; j < arr.length; j++){ var ans = arr[i] & arr[j]; if((ans > res) && (ans < k)){ res = ans; } } } return res; } console.log(findMaxPoss(range(n))); } function range(n){ return Array.apply(null, Array(n)).map(function (_, i) {return i + 1;}); } }
This comment has been removed by the author.
Python 3 solution is wrong.
Second loop for j can't start from 1.
Correct and tested code is as below. Please correct it for others.
#!/bin/python3
import math
import os
import random
import re
import sys
#
# Complete the 'bitwiseAnd' function below.
#
# The function is expected to return an INTEGER.
# The function accepts following parameters:
# 1. INTEGER N
# 2. INTEGER K
#
def bitwiseAnd(N, K):
retval= -sys.maxsize
for A in range(N-1, 0, -1):
for B in range(N, A, -1):
bitval= A&B
if retval < bitval < K:
retval= bitval
if retval == K – 1:
break
else:
continue
break
return retval
if __name__ == '__main__':
fptr= open(os.environ['OUTPUT_PATH'], 'w')
t= int(input().strip())
for t_itr in range(t):
first_multiple_input= input().rstrip().split()
count= int(first_multiple_input[0])
lim= int(first_multiple_input[1])
res = bitwiseAnd(count, lim)
fptr.write(str(res) + 'n')
fptr.close()
Site Can not preserve indentation in comments. Please correct it too. :->