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