CF1190F Tokitsukaze and Powers

为君一笑 提交于 2020-08-09 22:38:18

\(m = p_0^{k_0}\)。如果 \(p_0 \mid p\) 那么 \(p^e=km+x\) 的条件只有在 \(e=0\) 的时候对 \(1\) 会产生约束,其余的约束都被包含在了 \(p_0\) 那里,问题是平凡的。

对于 \(p_0 \nmid p\)\(T = \{p^e \bmod m|e \in N\}\)(集合里的数均对 \(m\) 取模,下同)中不会存在 \(p_0\) 的倍数,故两个条件约束的数集无交。判断无解需要知道集合 \(T\) 的大小才行,故考虑计算 \(|T| = \mathrm{order}(p)\)。由于 \(p^{\varphi(m)}=1,\)\(\mathrm{order}(p) \mid \varphi(m)\)。将 \(\varphi(m)\) 用 Pollard-Rho 分解质因数后枚举约数进行检验即可计算出 \(\mathrm{order}(p)\)

如果 \(\mathrm{order}(p) + \frac{m}{p_0}+n \geq m\) 则显然无解,否则考虑找一组解。

如果存在 \(\bmod\ m\) 意义下的原根,找一个原根 \(g\),设 \(p \equiv g^u \bmod\ m\)。那么 \(T = \{g^0,g^u,g^{2u},\ldots,g^{(\mathrm{order}(p)-1)u}\}\),设 \(v = \gcd(u,\varphi(m)) = \frac{\varphi(m)}{\mathrm{order}(p)}\)。不难证明 \(T = \{g^0,g^v,g^{2v},\ldots,g^{(\mathrm{order}(p)-1)v}\}\)。于是不合法的数在原根幂表示下指数一定是 \(v\) 的倍数。因为 \(\mathrm{order}(p) \leq \frac{m}{2}\) 所以 \(v \geq 2\),求出 \(v\) 后暴力枚举较小的指数选择。

对于不存在原根的情况,\(p_0=2\)。可以这样做:

  • 对于 \(m \leq 10^7\) 暴力;
  • 对于 \(p = 4x+1\),注意到 \(\forall e \in N, p^e \equiv 1\ \bmod\ 4\),所以可以在模 \(4\)\(3\) 的数中选,因为 \(m > 10^7,n \leq 5 \times 10^5\) 所以总能选出来;
  • 对于 \(p = 4x+3\),只在模 \(4\)\(1\) 的数中选,那么可以把 \(p\) 换成 \(p^2\)。注意到在模 \(2^k(k \geq 3)\) 意义下取 \(g'=5\) 时,任意一个模 \(4\)\(1\) 的数都可以表示为 \(g'\) 的若干次幂,证明可以考虑计算 \(\mathrm{order}(g')\),这里不多赘述。利用 \(g'\) 就可以类似有原根的做法做。因为 \(\mathrm{order}(p^2) = \frac{\mathrm{order}(p)}{2}\),而 \(\mathrm{order}(p) + \frac{m}{p_0}+n \geq m\)\(2\mathrm{order}(p) \leq \varphi(m)\),所以也总能选出一组解。

忽略 long long 乘法实现总复杂度 \(O(m^\frac{1}{4} + d(\varphi(m)) + n)\)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!