解法1
2番目の条件である となるための必要十分条件は となることである(ビットごとの排他的論理和の性質 - 忘れても大丈夫).
したがって, 以下の非負整数 に対して, を二進表記をしたときの立っているビット数を としたとき,2番目の条件である を満たす非負整数の対 の数は である.これは, の二進表記と集合表記を対応させたときの の表す集合の分割の仕方の数と等しい.
のビット長を とする. のビットが立っている上位ビットから 番目( 0-indexed )に対して, より上位ビットは と等しく, ビット目は となる非負整数を考える.このとき, より下位ビットがどのようになっていても必ず 以下となる.また, より下位ビットで 1 が立っているビット数が となる非負整数の数は となる.したがって, ビット目より上位ビットで 1 が立っているビット数を とすると,条件を満たす非負整数の対の数は
となる.最後の変形は二項定理による.
のビットが立っている場所に対して上の値を計算して,その総和と 2 の のビットが立っているビット数乗の和が答えとなる.
計算時間:
自力で解けたので満足して順位表を見ると625名も解けている.上位陣がたくさんは参加していないことを考えるとレベルが高くなっている.どうしよう.