沙拉公主的困惑
https://www.luogu.com.cn/problem/P2155
首先求 \(\phi(m!)\)。
然后要求 \([1,n!]\) 中与 \(m!\) 互质的数,考虑到 \(\gcd(a,b)=(a+b,b)\),那么我们可以增加若干倍的 \(m!\),即 \((x,m!)=(x+k\times m!,m!)\),那么可增加的数有 \(\dfrac{n!}{m!}-1\) 种,加上不增加的一种,恰好是 \(\dfrac{n!}{m!}\) 种。
所求即为 \(\dfrac{n!}{m!}\phi(m!)=n!(1-\dfrac{1}{p_1})(1-\dfrac{1}{p_2})\dots (1-\dfrac{1}{p_{cnt}})\)。
前者预处理阶乘,后者预处理逆元,然后前缀预处理。
注意到当 \(n\ge \bmod\),且 \(m<\bmod\) 时,前者出现了一个 \(0\),所以答案为 \(0\)。
然而当 \(m\ge\bmod\) 时,需要约去这两个 \(\bmod\),在预处理中实现。
查询使用 upper_bound
找到 \(\le m\) 的位置的所有 \(p\) 的答案。
复杂度 \(O(N+T\log\dfrac{N}{\ln n})\)。