No.206 問題 コード 大きさが で 番目のビットを立てた BitArray を作る. も同様にして作る. あとは の BitArray を1ビットずつずらしながら の BitArray との AND を取り, 立っているビット数を数える. ビットシフト, AND 演算, popcnt を駆使して定数倍高速化で間に合う. 別解: とすると, の は, となる の組み合わせの数である. であるから, が ずらしたときの積集合の数となる. よって, を FFT で計算すればいい.