atcoder#ABC291G. [ABC291G] OR Sum
[ABC291G] OR Sum
题目描述
長さ の数列 と が与えられます。
また、高橋君は数列 に対して、次の操作を好きな回数 ( 回でもよい) 行う事ができます。
- を つ左にシフトする、すなわち、 を、 で定義される で置き換える。ただし、 で、 を で割った余りを表す。
高橋君の目的は を最大化することです。ただし、 で と のビット毎の論理和(bitwise OR)を表します。
の値としてあり得る最大の値を求めてください。
ビット毎の論理和(bitwise OR)とは ビットの数字 ( または ) の組に対して下の表で定義される演算を論理和(またはOR演算)といいます。
ビット毎に論理和を適用する演算を**ビット毎の論理和(bitwise OR)**といいます。 論理和ではビット , の少なくとも一方が の場合に結果が となります。 逆に言うと、共に の場合のみ結果が となります。
具体例
0110 | 0101 = 0111
输入格式
入力は以下の形式で標準入力から与えられる。
输出格式
の値としてあり得る最大の値を出力せよ。
题目大意
给定两个长为 的序列 、,循环移位 使得 最大。
3
0 1 3
0 2 3
8
5
1 6 1 4 3
0 6 4 0 1
23
提示
制約
- 入力はすべて整数
Sample Explanation 1
高橋君が一度も操作を行わなかった時、 は のままであり、$ \displaystyle\sum_{i=0}^{N-1}\ (A_i|B_i)=(0|0)+(1|2)+(3|3)=0+3+3=6 $, 高橋君が 回操作を行った時、 となり、$ \displaystyle\sum_{i=0}^{N-1}\ (A_i|B_i)=(1|0)+(3|2)+(0|3)=1+3+3=7 $, 高橋君が 回操作を行った時、 となり、$ \displaystyle\sum_{i=0}^{N-1}\ (A_i|B_i)=(3|0)+(0|2)+(1|3)=3+2+3=8 $ となります。 回以上操作を行った時、 は上記のいずれかの形になるため、 の最大値は であり、 を出力します。
Sample Explanation 2
最大となるのは高橋君が 回操作を行った時であり、この時 となり、 $ \displaystyle\sum_{i=0}^{N-1}\ (A_i|B_i)=(4|0)+(3|6)+(1|4)+(6|0)+(1|1)=4+7+5+6+1=23 $ となります。