!先日参加したコンテストにこんな問題が出題されました。排他的論理和を使う問題です。n個の異なる整数のビットごとに排他的論理和を取ってxとなるようにしたい。105とし、出力する非負整数は106までとする排他的論理和は融通が効く印象がありました。考えました(その方針の元で実装した解法は無事、システムテストを通過しました!)排他的論理和の計算は色々なアルゴリズムに登場します。Hashを考えるとき、排他的論理和は欠かせません。今回のエントリでは連続した排他的論理和の計算方法について紹介したいと思います。1}という数列の排他的論理和を計算することを考えてみましょう。左から演算を行っていくと以下のように計算することができます。排他的論理和の演算は順序を入れ替えても結果が変わりません。これは利用できないでしょうか?試しに、先ほどの数列の隣り合った数を入れ替えてみましょう。先ほどと同様、左から計算します。無事同じ結果になりました(まあ答えは0か1にしかならないので、あまり説得力がないようにも思えますが...)。入れ替えれば数列を整列できそうです。具体的には0の数字の集まりと1の数字の集まりにできそうです。0と0の排他的論理和は0なのでした。