- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP

- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who

To solve a problem where we are given an array, and we need to find all possible integers which are bitwise AND of at least one not empty subarray, for example −

Input : nums[ ] = { 3, 5, 1, 2, 8 } Output : { 2, 5, 0, 3, 8, 1 } Explanation: 2 is the bitwise AND of subarray {2}, 5 is the bitwise AND of subarray {5}, 0 is the bitwise AND of subarray {1, 2}, {2, 8} and {1, 2, 8}, 3 is the bitwise AND of subarray {3}, 8 is the bitwise AND of subarray {8}, 1 is the bitwise AND of subarray {1}, {3, 5} and {3, 5, 1}. Input : nums[ ] = { 2, 6, 3, 8, 1 } Output: { 1, 8, 3, 6, 2, 0 }

A **Simple Approach** that can be applied is,

Find all the possible non-empty subarrays.

While traversing through the array, calculate the bitwise AND of each element in the subarray.

To avoid duplicate values, store all the results in a set.

#include <bits/stdc++.h> using namespace std; int main(){ int arr[] ={ 2, 6, 3, 8, 1 }; int n = sizeof(arr) / sizeof(arr[0]); // Declaring set to store result of each AND operation. unordered_set<int> result; int val; // nested loops to traverse through all the possible non empty subarrays. for (int i = 0; i < n; ++i){ for (int j = i, val = INT_MAX; j < n; ++j){ val = val & arr[j]; // storing result of AND operation result.insert(val); } } cout << "All possible numbers are: "; // printing all the values of set. for (auto i = result.begin(); i != result.end();i++) cout << *i << " "; return 0; }

All possible numbers are: 1 8 3 6 0 2

Declaring set to store all the results of AND operation.

Initializing the ‘val’ variable with INT_MAX because we need to do AND operation with all the bits set to 1.

Inside loop to go through all possible subarrays from the ith index.

Calculating AND operation of each element with each other and with themselves and storing in the result set.

Printing all the values of the result set.

In this tutorial, We discussed a simple approach to solve this problem, i.e., calculating AND operation in every possible subarray. We also discussed the C++ program to solve this problem. Also, you can write this code in any other language like Java, C, Python, etc. We hope you find this tutorial helpful.

- Related Questions & Answers
- Print array elements that are divisible by at-least one other in C++
- Count elements that are divisible by at-least one element in another array in C++
- Count of sub-strings that contain character X at least once in C++
- Bitwise AND of sub-array closest to K in C++
- Count pairs in an array such that at least one element is prime in C++
- Count pairs in an array such that frequency of one is at least value of other in C++
- How to extract columns having at least one non-duplicate in R?
- Maximum value K such that array has at-least K elements that are >= K in C++
- Count pairs (p, q) such that p occurs in array at least q times and q occurs at least p times in C++
- Bitwise AND of Numbers Range in C++
- How to remove rows that contain at least one 0 in R?
- Count divisors of n that have at-least one digit common with n in Java
- Largest sum subarray with at-least k numbers in C++
- Swapping numbers using bitwise operator in C
- How are entire non-empty directory trees removed using Python?

Advertisements