題目
正解
可以發現是個長成或的東西,然後後面就像階梯一樣指數和一層一層地下降,最終到。
考慮的情況(另一個情況枚舉被除去是什麼時候,其它類似):
從後往前做,設表示最高能放到的層數不超過第層的數字有多少個。
假設已經處理完了層,第層的點中要取出一個放到最前面,然後其它的隨意插入後面的序列中。
於是貢獻大概是這樣:
這條式子可以化簡,最終發現瓶頸在於我們需要快速計算出的值。
模數固定,分段即可……
既然有打表,那代碼就不放了……
可以發現g1是個長成2k或2k∗3的東西,然後後面就像階梯一樣指數和一層一層地下降,最終到1。
考慮2k的情況(另一個情況枚舉3被除去是什麼時候,其它類似):
從後往前做,設si表示最高能放到的層數不超過第i層的數字有多少個。
假設已經處理完了i−1層,第i層的點中要取出一個放到最前面,然後其它的隨意插入後面的序列中。
於是貢獻大概是這樣:s0!∏(si−si−1)!Csisi−si−1−1
這條式子可以化簡,最終發現瓶頸在於我們需要快速計算出(n−1)!的值。
模數固定,分段即可……
既然有打表,那代碼就不放了……