バイナリ形式で表された2つの数値に対して演算を行いたい場面があります。たとえば a と b という数があるとき、両方の数でビットが 1 になっている部分以外をすべて 0 にしたい場合(これは AND 演算に相当します)や、どちらかのビットが 1 になっている部分をすべて 1 にしたい場合(これは OR 演算に相当します)などが考えられます。
a
b (OR)
b
a
a ^ b (XOR) exclusive OR
2進数と10進数の表記
2進数と10進数の表記
(両方のビットが 1 なら 1, そうでなければ 0)
(どちらかのビットが 1 なら 1, そうでなければ 0)
ビットが異なる場合に 1, 同じ場合に 0
110 (6)
101 (5)
100 (4)
111 (7)
011 (3)
100111 (39)
010100 (20)
100 (4)
110111 (55)
110011 (51)
Challenge
与えられた n 個の整数のうち、2 つを選んで OR 演算を行ったときに得られる値が最大になる組み合わせを求めてください。