aacord’s memo

abcを中心にpythonで解いた問題のメモ、整理をしています。緑になった。

abc 121 d 'XOR World' (python)

a から b までのXORの累乗和を計算する問題
1から15までのXORの累乗和を順に求めていくと、
1、11、0、100、1、111、0、1000、1、1011、0、
1100、1、1111、0 となっていき、3 (mod4)のときに0になることがわかる
また、a から b までのXORの累乗和は
1 から b までのXORの累乗和 - 1 から a-1 までのXORの累乗和 で求められる

a,b = [int(i) for i in input().split()]
if (a-1)%4 == 0:
  s_a = a-1
elif (a-1)%4 == 1:
  s_a = 1
elif (a-1)%4 == 2:
  s_a = (a-1)^1
else:
  s_a = 0
  
if b%4 == 0:
  s_b = b
elif b%4 == 1:
  s_b = 1
elif b%4 == 2:
  s_b = b^1
else:
  s_b = 0
  
print(s_a^s_b)