沙拉公主的困惑

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})\)

https://www.luogu.com.cn/record/173972948

posted @ 2024-08-21 15:20  wscqwq  阅读(1)  评论(0编辑  收藏  举报