题目
正解
可以发现是个长成或的东西,然后后面就像阶梯一样指数和一层一层地下降,最终到。
考虑的情况(另一个情况枚举被除去是什么时候,其它类似):
从后往前做,设表示最高能放到的层数不超过第层的数字有多少个。
假设已经处理完了层,第层的点中要取出一个放到最前面,然后其它的随意插入后面的序列中。
于是贡献大概是这样:
这条式子可以化简,最终发现瓶颈在于我们需要快速计算出的值。
模数固定,分段即可……
既然有打表,那代码就不放了……
可以发现g1是个长成2k或2k∗3的东西,然后后面就像阶梯一样指数和一层一层地下降,最终到1。
考虑2k的情况(另一个情况枚举3被除去是什么时候,其它类似):
从后往前做,设si表示最高能放到的层数不超过第i层的数字有多少个。
假设已经处理完了i−1层,第i层的点中要取出一个放到最前面,然后其它的随意插入后面的序列中。
于是贡献大概是这样:s0!∏(si−si−1)!Csisi−si−1−1
这条式子可以化简,最终发现瓶颈在于我们需要快速计算出(n−1)!的值。
模数固定,分段即可……
既然有打表,那代码就不放了……