ABC E - Red Scarf
問題原文
解法
答えを、 とする。
両辺に をかけると、 になる。
これは、 が偶数なことより、右辺で各 が 奇数回あらわれるため。
これは一般化できるので、 としておいて、 を各 について行えばよい。
が奇数の場合には、
となる。右辺はあきらかに0なので、 になってないといけない。
逆にもし0ならば、そのままで条件を満たしていることになる。
実装
reduce
、なるほど。
from functools import reduce N = int(input()) A = list(map(int, input().split())) ALL_XOR = reduce(lambda x, y: x ^ y, A) print(*[a ^ ALL_XOR for a in A], sep=' ')
感想
本番はわちゃわちゃした結果左右から累積xorで解いてしまった。(例の黒板gcd的な)
コンテスト終わりのTLを見てたら理解できた感じがします。ありがとうございます。
ところで茶diffとはいったい。