题解 cf gym 103261 D FFT Algorithm

传送门

用到一个很冷门的数论定理


【题意】

给定数字 \(m, k\) ,求一个数字 \(\omega\) 使得 \(\text{ord}_m(\omega)=2^k\)

\(\text{ord}_m(a)\) 表示数字 \(a\) 在群 \(<Z_m, \otimes_m>\) 下的阶,即 \(a^{\text{ord}_m(a)}\equiv 1\pmod m\wedge a^k\not\equiv 1\pmod m(0\leq k<\text{ord}_m(a))\)


【分析】

由 Carmichael 函数的定义得,对于 \(m\) 的 Carmichael 函数 \(\lambda(m)\) ,表示 \(\forall \gcd(a, m)=1\to a^{\lambda(m)}\equiv 1\pmod m\)

而根据 Carmichael 定理, \(\lambda(p^k)=\begin{cases} \boldsymbol \varphi(p^k),p>2\vee k<3 \\\\{1\over 2}\boldsymbol \varphi(p^k),p=2\wedge k\geq 3 \end{cases}\)

且根据中国剩余定理,若 \(\displaystyle m=\prod_{i=1}^tp_i^{k_i}\) 则根据 \(a^{\lambda(m)}\equiv 1\pmod m\)\(a^{\lambda(m)}\equiv 1\equiv a^{\lambda(p_i^{k_i})}\pmod {p_i^{k_i}}\)

从而得到 \(\lambda(p_i^{k_i})\mid \lambda(m)\) ,故 \(\displaystyle \lambda(m)=\text{lcm}_{1\leq i\leq t}\lambda(p_i^{k_i})\)

若存在数字 \(\omega\) 使得 \(\text{ord}_m(\omega)=2^k\)\(2^k\mid \lambda(m)\) ,故 \(\exists p_i\wedge 2^k\mid \lambda(p_i^{k_i})\)

\((p_i=2\wedge k_i-1-[k_i\geq 3]\geq k)\vee(2^k\mid (p_i-1))\)

题解这一段枚举到 \(\sqrt{m\cdot 2^{-k}}\) 系数,转质数的方法我没理解,但使用 Pollard_Rho 在 \(O(m^{1\over 4})\) 的时间内分解质因数应该是可行的

如果分解后,判定优解,则对于 \(2^k\mid \lambda(p_i^{k_i})\) 的奇质因数 \(p_i\) ,其存在 \(\boldsymbol \varphi(\lambda(p_i^{k_i}))\) 个原根,直接随机化获取原根 \(g\),则可得到 \((g^{\lambda(p_i^{k_i})\cdot 2^{-k}})^{2^k}\equiv 1\equiv \omega^{2^k}\pmod {p_i^{k_i}}\)

\(\omega\equiv g^{\lambda(p_i^{k_i})\cdot 2^{-k}}\pmod {{p_i}^{k_i}}\)

\(p_i=2\)\(2^k\mid \lambda(p_i^{k_i})\) ,题解说也存在 \(\boldsymbol \varphi(\lambda(p_i^{k_i}))\) 个根 \(r\),使得 \(\text{ord}_{p_i^{k_i}}(r)=\lambda(p_i^{k_i})\) ,也可以随机化得到,然后同上得到 \(\omega\equiv r^{\lambda(p_i^{k_i})\cdot 2^{-k}}\pmod {{p_i}^{k_i}}\)

对于不满足的,直接得到 \(\omega\equiv 1\pmod {p_i^{k_i}}\)

最后,得到若干同余方程。由于模数均是原数的质因数分解,故模数互质,直接 CRT 合并即可


【代码】

有点难码,先咕咕咕了,后期回来填坑

posted @ 2021-10-10 22:43  JustinRochester  阅读(61)  评论(0编辑  收藏  举报