-
題目鏈接
-
題目大意
求有多少葉子數為 \(n\) 的樹滿足所有非葉節點的兒子數 \(x\in S\) 。
\(T\) 組詢問,\(S\) 預先給定,答案對 \(M\) 取模。
\(1\le n\le 10^{18},2\le max\{s|s\in S\},M\le 50,1\le T\le 100,1\notin S\)
-
前言
\(\Huge{\text{stO EI Orz}}\)
-
題解
顯然考慮生成函數,設答案的生成函數為 \(F(x)\) ,那么:
\[F(x)=x+\sum_{i\in S}F(x)^i\\ F(x)-\sum_{i\in S}F(x)^i=x \]顯然想到拉格朗日反演,構造函數 \(G(x)=x-\sum_{i\in S}x^i\) ,那么有:
\[[x^n]F(x)=\frac{1}{n}[x^{n-1}]\left(\frac{x}{G(x)}\right)^n \]這並不能做,因為不保證 \(n\) 在模 \(M\) 意義下有逆。
然后考慮 \(\text{EI}\) 在今年 \(\text{WC2021}\) 提出的另類拉格朗日反演,有:
\[[x^n]F(x)=[x^{n-1}]G'(x)\left(\frac{x}{G(x)}\right)^{n+1} \]這樣我們就成功規避了除法,現在問題轉化為求一個多項式的高階冪的問題。
接下來我們僅考慮模數是質數或質數次冪的情況,因為更一般的情況可以直接 \(CRT\) 求得。
設該質數為 \(p\) 。
先考慮模 \(p\) 。
根據歷年的一些經典題目,我們可以得到多項式高階冪模質數的一個重要性質:
\[F(x)^p\equiv F(x^p)\pmod p \]證明即考慮多項式系數 \(\binom{p}{a_1,\dots,a_m}\) ,其模 \(p\) 不為 \(0\) 當且僅當 \(a_1=p\) ,此時值為 \(1\) ,證畢。
那么我們可以考慮設計一個算法,每次將規模 \(/p\) ,就可以解決這個問題。
具體而言,考慮計算 \([x^m]A(x)B(x)^n\),令 \(m=pm_1+r_m,n=pn_1+r_n\),然后我們進行一些推導:
\[\begin{aligned} &[x^m]A(x)B(x)^n\\ \equiv&[x^{pm_1+r_m}]A(x)B(x)^{pn_1+r_n}\\ \equiv&[x^{pm_1+r_m}](A(x)B(x)^{r_n})B(x)^{pn_1}\pmod p \end{aligned} \]令 \(A(x)B(x)^{r_n}=\sum_{r=0}^{p-1}x^rC_r(x^p)\) ,那么:
\[\begin{aligned} &[x^{pm_1+r_m}](A(x)B(x)^{r_n})B(x)^{pn_1}\\ \equiv&[x^{pm_1+r_m}]x^{r_m}C_{r_m}(x^p)B(x)^{pn_1}\\ \equiv&[x^{pm_1}]C_{r_m}(x^p)B(x^p)^{n_1}\\ \equiv&[x^{m_1}]C_{r_m}(x)B(x)^{n_1}\pmod p \end{aligned} \]這樣我們就可以遞歸了,預處理出所有 \(B^r\) ,令 \(A,B\) 的項數為 \(k\),那么復雜度是 \(\mathcal O((kp)^2+Tk^2\log_p n)\) 。
接下來考慮模 \(p^u\) 。
根據上方的討論,我們自然希望多項式高階冪模 \(p^u\) 也有類似性質。
事實上對 \(p^u\ (u\in \Z^+)\) ,我們都有:
\[F(x)^{p^u}\equiv F(x^p)^{p^{u-1}}\pmod {p^u} \]考慮歸納證明,\(u=1\) 由上可知成立,對於 \(u> 1\) ,設 \(F(x)^{p^u}=F(x^p)^{p^{u-1}}+p^uG(x)\) ,那么:
\[\begin{aligned} F(x)^{p^{u+1}}=&(F(x^p)^{p^{u-1}}+p^uG(x))^p\\ =&\sum_{i=0}^p\binom{p}{i}F(x^p)^{ip^{u-1}}p^{(p-i)u}G(x)^{p-i}\\ \equiv&F(x^p)^{p^u}\pmod {p^{u+1}} \end{aligned} \]最后一步轉化與上面類似,那么即得原命題成立。
這樣我們令 \(A_0(x)=A(x)B(x)^{n\bmod p^{u-1}},B_0(x)=B(x)^{p^{u-1}},n'=[n/p^{u-1}]\) ,就可以直接套用原來的方法計算了,復雜度 \(\mathcal O((p^uk)^2+T(p^{u-1}k)^2\log_p n)\) 。