競プロにもありそうな教育的な問題だと思いました。
問題
の並べ替え
について、
となる
の個数を
とする。すべての並べ替え
について
を足し合わせた値を求めよ。
解答
を、
であるような
の順列
の個数とします。
のときは撹乱順列の個数で、包除原理から
とわかります(母関数による導出もあります:指数型母関数入門 – 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」および「特殊な合成」の項を参照)、(階乗の計算を除いて)全体
で求まる。