CPSCO2019 Session3 E - Enumerate Xor Sum
解法
のときの答えを求めてみます。
については、の累積xorをとっておくことでで求めることができるので割愛します。
とのxorを取った値をとすると、xorの定義から、それぞれの桁について、の立ってるビットの個数が1ならばのその桁は1、そうでなければ0となります。
について立っているビットは最初から決まっているので、について、それぞれの桁で立っているビット、立っていないビットの個数が全部で何個あればいいか、というのがわかればよいことになります。
ということは、からまでのそれぞれのビットについて、立っている個数と立っていない個数を調べれば、のビットによって場合分けをして、を表すビットの部分は全体で何回足されるか、というのが計算できるようになります。
感想
桁でわける、という典型を思い出したらすんなり解けたのでよかったです。 実装もバグらせなかった(記憶)ので満足かなと思います