1041: 最大或 [思维]
时间限制: 1 Sec 内存限制: 128 MB提交: 42 解决: 18 统计
题目描述
给定一个有n个元素的序列,你可以从中选出任意个元素,要求它们 相或之后的值最大,现在要求你找出这个结果。
提醒:或(|) 是一种二进制位运算,遵循原则——只有两个二进制位均为0时,结果才为0,反之为1。
如两个数5和9,二进制分别为:
0101
1001
=1101
-> 5 | 9 = 13。
输入
第一行输入一个整数 T T,代表有 T T组测试数据( T<=200 T<=200 )
每组数据占2行,第一行有一个整数 n n代表序列元素个数,接下来一行有 n n个整数代表 n n个元素。
保证 1<=n<=1000 1<=n<=1000 且 0<= 0<=序列元素 <=106 <=106。
输出
输出一个整数,代表经过或运算之后可以得到的最大结果。
样例输入
3
3
1 2 3
4
1 1 1 1
1
5
样例输出
3
1
5
#include<iostream>
using namespace std;
int main()
{
int T;
cin>>T;
while(T--)
{
long long m,n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>m;
ans|=m;
}
cout<<ans<<endl;
}
}