Algorithm 按位AND与按位OR的最大乘积

Algorithm 按位AND与按位OR的最大乘积,algorithm,bit-manipulation,Algorithm,Bit Manipulation,我们得到了一个数组。 我们需要找出两个指数i和j(i!=j),这样 给定值 X(i,j)=(Arr[i]&Arr[j])*(Arr[i]| Arr[j]) 是最大值,其中&表示按位,而|表示按位或 我们需要打印X的最大值 1<=Size of array<=100000 1<=Arr[i]<=1000000000 我发现用O(N*32)的解可以很容易地找到最大值和,但同时对按位或和进行维护变得越来越困难。数组的实际值是多少?内核化可能吗?例如,当你有7==11

我们得到了一个数组。 我们需要找出两个指数i和j(i!=j),这样 给定值
X(i,j)=(Arr[i]&Arr[j])*(Arr[i]| Arr[j])
是最大值,其中&表示按位,而|表示按位或

我们需要打印X的最大值

1<=Size of array<=100000  
1<=Arr[i]<=1000000000   

我发现用O(N*32)的解可以很容易地找到最大值和,但同时对按位或和进行维护变得越来越困难。

数组的实际值是多少?内核化可能吗?例如,当你有
7==111b
时,你可以消除
1..6
,因为
7&x>(1..6)&x
7&x>=(1..6)|x
值的范围可以是1到10^9,它是2的幂的正常乘法模,还是完全的bigint乘积?因为最大数组元素是1e9,2元素的乘积不会超过1e18。不涉及模运算。数组的实际值是多少?内核化可能吗?例如,当你有
7==111b
时,你可以消除
1..6
,因为
7&x>(1..6)&x
7&x>=(1..6)|x
值的范围可以是1到10^9,它是2的幂的正常乘法模,还是完全的bigint乘积?因为最大数组元素是1e9,2元素的乘积不会超过1e18。不涉及模运算。
N=4  
Arr[]= 2 3 4 5  
Ans is 20 ( (4&5) * (4|5) )