来源:牛客网
题目描述
给定一个长度为 n 的数组 a,求数组所有非空子序列权值的最小值。
定义子序列 ai,aj,…,ak 的权值为ai&aj&,…,&ak
其中 &为二进制中的按位与
输入描述:
第一行包含一个正整数 n (1≤n≤20) 代表数组长度。
第二行包含 n 个正整数 ai (1≤ai≤10^9)代表数组中每个数的值。
输出描述:
输出数组中所有非空子序列权值的最小值。
示例1
输入
6 1 1 4 5 1 4
输出
0
备注:
子序列不一定连续
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,a[21],i;
cin >> n;
for (int i = 0;i < n;i ++){
cin >> a[i];
}
sort (a,a + n);
int mi = a[0];
int min = a[0];
for (i = 0;i < n;i ++){
mi = mi & a[i];
if (min > mi)
min = mi;
}
cout << min;
return 0;
}