No.329

が全射を持つためには, である必要がある.

ワーシャル・フロイド法を改造して の経路のうち途中の の最小値が最も大きくなるものを求めておく. その上でそれぞれの全射の数を合計する. なお, の全射の数は, これが合成関数かどうかにかかわらず だけ見ればいい. (入力と出力が一致する関数は同一とみなすため)

() の全射の数は, の要素の並びの組み合わせ数が 通りであり, の要素を 個のグループに分ける組み合わせの数が第二種スターリング数を使って 個であるので, この積となる.

, はあらかじめ計算しておく.