No.130

の最上位ビットを立てたときの の最大値は, の最上位ビットが立っていないものだけ集めて, 残りのビットについて計算した結果となる.

の最上位ビットを立てなかったときの の最大値は, の最上位ビットが立っていないものだけ集めて, 残りのビットについて計算した結果となる.

両者を比較して小さい方を採用するようにする.

これを再帰的に計算すればいい. が絞られていくので, で計算できる.