2020年8月22日土曜日

yukicoder No.1191 数え上げを愛したい(数列編)

条件を満たす数列のすべての要素は互いに異なるので、昇順のものだけ数えて後でN!N!を掛ければよい。

S1S_1が与えられたとき、残りの項は

f(k):=f(k) := 11回の操作でAAマス以上進むとして、N1N-1回操作してちょうどkkマス進む場合の数

と考えると形としてはf(A)+f(A+1)+...+f(B)f(A)+f(A+1)+...+f(B)通りのように求まる。(実際にはS1+kMS_1+k \le Mであるようなf(k)f(k)までしか足せない)したがって、ffかあるいはその累積和F(k)=i=1kf(i)F(k) = \sum_{i=1}^kf(i)が求めればS1=1,2,...,NS_1 = 1, 2, ..., Nについて足せばよいことになる。形式的べき級数で考えると

f(k)=[xk](xA+xA+1...)N1=[xk](xA1x)N1=[xkA(N1)](1x)(N1)=[xkA(N1)]i=0(i+N2N2)xi=(kA(N1)+N2N2) \begin{aligned} f(k) & = [x^k](x^A+x^{A+1}...)^{N-1} \\ & =[x^k]\Bigl(\frac{x^A}{1-x}\Bigr)^{N-1} \\ & =[x^{k-A(N-1)}](1-x)^{-(N-1)} \\ & = [x^{k-A(N-1)}] \sum_{i=0}^\infty \binom{i+N-2}{N-2}x^i\\ & = \binom{k-A(N-1)+N-2}{N-2} \end{aligned}

F(k)F(k)を求めるなら、(1x)1(1-x)^{-1}をもう一つ掛けることになるので(kA(N1)+N1N1)\binom{k-A(N-1)+N-1}{N-1}となる。