[按位与]

[按位与]_第1张图片

#include
using namespace std;
const int M=1e5+10;
int n,a[M];
long long q[M],qq[M],ans=-1;
int main(){
	scanf("%d",&n);
	scanf("%d",&a[1]);
	q[1]=a[1];
	for (int i=2;i<=n;i++){
		scanf("%d",&a[i]);
		q[i]=q[i-1]&a[i];
	}
	qq[n]=a[n];
	for (int i=n-1;i>=1;i--)
		qq[i]=qq[i+1]&a[i];
	for (int i=1;i<=n;i++){
		int sum=q[i]+qq[i+1];
		if (sum>ans) ans=sum;
	}
	printf("%d",ans);
	return 0;
} 

你可能感兴趣的:(算法)