给定一个整数数组,任务是找到该数组每个子集的所有元素的AND,并在所有这些元素中打印出最小AND值。
例子:
Input: arr[] = {1, 2, 3}
Output: 0
AND of all possible subsets
(1 & 2) = 0,
(1 & 3) = 1,
(2 & 3) = 2 and
(1 & 2 & 3) = 0.
Minimum among these is 0.
Input: arr[] = {7, 2}
Output: 2
方法:数组任何子集的最小AND值将是数组所有元素的AND。因此,最简单的方法是在子数组的所有元素中查找AND。
下面是上述方法的实现:
执行:
C++
// C++ program for the above approach
#include
using namespace std;
void minAND(int arr[], int n)
{
int s = arr[0];
// Find AND of whole array
for (int i = 1; i < n; i++)
{
s = s & arr[i];
}
// Print the answer
cout << (s) << endl;
}
// Driver code
int main()
{
int arr[] = {1, 2, 3};
int n = sizeof(arr)/sizeof(int);
minAND(arr, n);
}
// This code has been contributed by Arnab Kundu
Java
// Java program for the above approach
class GFG
{
static void minAND(int[] arr, int n)
{
int s = arr[0];
// Find AND of whole array
for (int i = 1; i < n; i++)
{
s = s & arr[i];
}
// Print the answer
System.out.println(s);
}
// Driver code
public static void main(String[] args)
{
int[] arr = {1, 2, 3};
int n = arr.length;
minAND(arr, n);
}
}
// This code has been contributed by 29AjayKumar
Python
# Python program for the above approach
def minAND(arr, n):
s = arr[0]
# Find AND of whole array
for i in range(1, n):
s = s & arr[i]
# Print the answer
print(s)
# Driver code
arr = [1, 2, 3]
n = len(arr)
minAND(arr, n)
C#
// C# program for the above approach
class GFG
{
static void minAND(int[] arr, int n)
{
int s = arr[0];
// Find AND of whole array
for (int i = 1; i < n; i++)
{
s = s & arr[i];
}
// Print the answer
System.Console.WriteLine(s);
}
// Driver code
static void Main()
{
int[] arr = {1, 2, 3};
int n = arr.Length;
minAND(arr, n);
}
}
// This code has been contributed by chandan_jnu
PHP
输出:
0