入力A,Bに対して,を求めよ
入力の制約からして,すべてのA ~ Bまでの排他的論理和を取ることはできない。排他的論理和の性質を利用する必要がある。 ある連続した偶数と奇数を2進数で表現すると,2つの値の差異はの箇所のみであり,となることがわかる。 したがって,として,偶数・奇数の組合せを作っていけば1の排他的論理和がだけ繰り返せば答えが求まる。 A,Bの偶奇によって,答えの出し方は以下の4通りになる。
最後の値であるBが余るので,答えはとなる
すべての値がペアを持つので,答えはとなる
AとBがペアを持たず余るので,答えは となる
Aのみがペアを持たず余るので,答えはとなる
A, B = map(int, input().split())
num = B - A + 1
if A % 2 == 0:
if B % 2 == 0:
ans = ((num - 1) // 2) % 2 ^ B
else:
ans = (num // 2) % 2
else:
if B % 2 == 0:
ans = A ^ B ^ ((num - 2) // 2) % 2
else:
ans = A ^ ((num - 1) // 2) % 2
print(ans)