考察

i(i+1)i \oplus (i+1) の挙動に注目します。例えば、i=247i = 247 とします。i,i+1i, i+122 進展開は

i=247=10100111(2)i+1=248=10101000(2)i = 247 = 10100111_{(2)}\\ i+1 = 248 = 10101000_{(2)}

となり xor は

10100111(2)10101000(2)=00001111(2)10100111_{(2)} \oplus 10101000_{(2)} = 00001111_{(2)}

となります。 i(i+1)i \oplus (i+1)iii+1i+122 進展開の差異を表します。 ii11 を足したものが i+1i+1 であるため、i(i+1)i \oplus (i+1) は本質的に「ii11 を足したとき、二進表記で繰り上がりがどこまで起きるか」を表します。

よって、 i(i+1)i \oplus (i+1)ii22 進展開の最下位の桁から 11 がどれだけ続くか (Count Trailing Ones) を数えれば分かります。例えば i=247=10100111(2)i=247= 10100111_{(2)} なら、11 は最下位から 33 桁続いているため、繰り上がりが 33 回発生し、i,i+1i, i+1 の bit の差異は 1111(2)1111_{(2)} です。よって、i(i+1)=1111(2)i\oplus(i+1) = 1111_{(2)} になります。

厳密に: i2k1(mod2k+1)i \equiv 2^{k} - 1 \pmod{2^{k+1}} とします (この非負整数 kk は各 ii に対して一意に存在する)。このとき i(i+1)=2k+11i \oplus (i+1) = 2^{k+1}-1 です。例として、 i=247=10100111(2)i=247= 10100111_{(2)} なら、i7(mod16)i \equiv 7 \pmod{16} すなわち i231(mod24)i \equiv 2^{3} - 1 \pmod{2^4} なので、i(i+1)=241=15i \oplus (i+1) = 2^4-1 = 15 です。

解法

f(i)f(i) を、i2k1(mod2k+1)i \equiv 2^{k} - 1 \pmod{2^{k+1}} を満たす唯一の kk とおきます。求めるべきは、LiRL \le i \le R であって f(i)f(i) が最大になるようなものです。

制約下で f(i)60f(i) \le 60 なので、k=60,59,58,,0k = 60, 59, 58, \cdots, 0 ごとに LiRL \le i \le R であって f(i)=kf(i) = k となるようなものの個数を求めて、それが 11 個以上あればよいことになります。

nn 以下の非負整数であって f(i)=kf(i)=k となるものの個数を Sn,kS_{n,k} とすると、

Sn,k=n+2k+12k+1\displaystyle S_{n,k} = \left\lfloor \frac{n+2^{k}+1}{2^{k+1}} \right\rfloor

です。LiRL \le i \le R であって f(i)=kf(i)=k となるようなものの個数は SR,kSL1,kS_{R,k} - S_{L-1,k} 個あるため、O(logR)O(\log R) でこの問題が解けました。