きろく

特筆すべき記録のまとめ

AtCoder Beginner Contest 121:D - XOR World

問題

atcoder.jp

解法

A, B >= 10^12 と大きいので愚直な計算では TLE となってしまう.

ここで,答えとなる数の k bit 目を明らかにすることを考える.0  から順番に数を 2 進数表記で書いて眺めてみると,1 bit 目は 0, 1, 0, 1, ... と 0, 1 の塊が永遠と並んでいる.同様に k bit 目は

0, 0, ... , 0, 1, 1, ... , 1(0, 1 はそれぞれ 2^(k-1) 個)

となっていることに気づく.これを踏まえて,0 ~ B の k bit 目に立っている bit の数と 0 ~ A の k bit 目に立っている bit の数を数え,前者から後者を引いた数が奇数であれば答えの k bit 目は 1 であり,そうでなければ 0 である.O(logB).

解答

atcoder.jp

ちょっと焦ってしまったが No WA で通せたのでよかった.

f:id:babcs2035:20190309223702p:plain