Codeforces Round #597 (Div. 2) - F. Daniel and Spring Cleaning

問題リンク

解説

 a + b = a \oplus bを満たす a, bが存在する

 a \ \mathrm{and} \  b = 0となる a, bが存在する

と同値です。ここまでくると後は桁DPで

dp[i][j][k][l] := i bit目までみたとき、j(すでに下限を超えたか)、k(すでに上限を下回ったか)、l(すでに二つの大小関係は満たされたか)

の桁DPを丁寧にしましょう。

基本的に二つのペアは異なりますが、(0, 0)という組み合わせだけは異ならないので注意しましょう

提出コード

codeforces.com