競プロにもありそうな教育的な問題だと思いました。
問題
の並べ替え について、 となる の個数を とする。すべての並べ替え について を足し合わせた値を求めよ。
解答
を、 であるような の順列 の個数とします。
のときは撹乱順列の個数で、包除原理から とわかります(母関数による導出もあります:指数型母関数入門 – 37zigenのHP)。
一般の に対しては、一致する箇所 個を選んだ後、残り 個の場所で撹乱順列を作ると考えて、 となります。
答えは (で としたもの)です。
母関数を使って考察します。まずは撹乱順列の個数 の母関数を考えましょう。 であり、撹乱順列の個数はその累積和なので をかけたものが母関数になります。つまり です。
次に の母関数を考えましょう。このままでは考えにくいので、 と変形します(このように冪乗を下降冪の級数で表したときの係数は 第 2 種スターリング数 です)。すると
となります(負の階乗の逆数や負冪の係数は とみなしておきます)。よって答えは
となります。(補足:2 行目から 3 行目は FPS の積の定義、3 行目から 4 行目は 倍が累積和)
競プロ
を に、 を に一般化したときの答えを とすると、 です( は第 2 種スターリング数)。これを(mod 998 とかで)計算する競プロの問題だと思うことにします。[多項式・形式的べき級数] 高速に計算できるものたち | maspyのHP を参考にすると、次のことがわかります。
固定、クエリ に対して を求める:「第 2 種 Stirling 数」の項の「前者」の方法で を で前計算して累積和をとることで、各クエリについて(階乗の計算を除いて) で求まる。
固定、 に対して を求める: がすべての について足されることから Bell 数になって、 で求まる(「Bell 数」の項も参照)。
固定、 に対して を求める:「第 2 種 Stirling 数」の項の「後者」を参考にすると を 次まで求めればよい。これは を Polynomial Taylor Shift した後 を代入すればよいので(「Polynomial Taylor Shift」および「特殊な合成」の項を参照)、(階乗の計算を除いて)全体 で求まる。