解説

上のビットから求めて行きます。桁DPを行います。

dp[iビット目][xがa未満確定か][yがb未満確定か] のようなdp配列を作成します。

XXiiビット目を固定した時、YYiiビット目も一意に定まります。

0,10,1どちらも試し、AAiiビット目が11かつ、試したビットが00の時にXXAA未満が確定します。YYも同様です。

最後のビットまで見た時、dp[0][0][0]+dp[0][0][1]+dp[0][1][0]+dp[0][1][1]dp[0][0][0] + dp[0][0][1] + dp[0][1][0] + dp[0][1][1]が答えとなります。

実装ではdpのiビット目の部分は省いています。

実装