No.122

とする.

となる組み合わせの数を とする. の中の が最小となる組み合わせの数を とすると,

となる.

ここで を考えると, または のときは である.

そうでない場合は は, の範囲をそれぞれ としてこの の組み合わせの数となる. (どれかひとつでも範囲の最小が最大を上回った場合は である)

この組み合わせの数を求めるために包除の定理を使う.

それぞれの範囲の数の積を取り, ここから となる組み合わせの数を引く. となる組み合わせの数は の範囲の共通部分の範囲の数と の範囲の数の積である.

このままだと となる組み合わせの数を2回多く引いてしまっているので, 最後に となる組み合わせの数の2倍を足す.

となる組み合わせの数を として, これも同様に計算する.

このとき, 求める組み合わせの数は,

となる. は累積和を計算しておけば高速に計算できる.

の場合も同様に計算する.