Problem. S

题意简述:

给定复数\(z=\sum\limits_{i=1}^nz_i(z_i\in\mathbb Z[i])\),求\(\mathbb K[\mathbb Z[i]]\)上的使得\(f(z)=0\)的多项式\(f(z)\)的最低次数,答案对\(998244353\)取模。

数据范围:

\(n\le100,|z_i|\le10^9\)

解法:

\(p(x)\)\(z\)\(\mathbb Z\)上的极小多项式,那么\(\deg p=[\mathbb Z(a):\mathbb Z]\)
\(a_i\)两两互质,则显然有\([\mathbb Z(\sqrt a_1,\cdots,\sqrt a_n):\mathbb Z]=2^n\)
不妨认为\(\mu(a_i)\ne0\),对于每个\(a_i\)构造一个向量\(\mathbf b_i\),满足\(\mathbf b_{i,j}=p_j|a_i\)
\(\mathbb F_2\)\(\operatorname{span}(\mathbf b_1,\cdots,\mathbf b_n)=m\),那么\([\mathbb Z(\sqrt a_1,\cdots,\sqrt a_n):\mathbb Z]=2^m\)
\(a=\sum\limits_{i=1}^na_i\),又因为\(p(a)=p(\overline a)=0\),所以我们有\([\mathbb Z(a):\mathbb Z]=[\mathbb Z(\sqrt a_1,\cdots,\sqrt a_n):\mathbb Z]=2^m\)
我们知道\(\mathbb Z[i]\)上是有唯一分解定理的,因此可以套用\(\mathbb Z\)上的做法。
具体来说是因为\(i\)不与任何其它\(\mathbb Z[i]\)上的素数线性相关,因此我们可以将\(i\)视为素数。
考虑\(z=x+yi\in\mathbb Z[i]\)的素性:
\(1.\)\(xy=0\),则\(z\in\mathbb P[i]\Leftrightarrow\operatorname{norm}(z)|\in\mathbb P\wedge\operatorname{norm}(z)\not\equiv1\pmod4\)
\(2.\)\(xy\ne0\),则\(z\in\mathbb P[i]\Leftrightarrow\operatorname{norm}(z)\mathbb P\)
那么我们可以直接对\(\operatorname{norm}(z)\)分解质因数,对于\(p|\operatorname{norm}(z)\):
\(1.\)\(p=2\),则\(1+i|z\)
\(2.\)\(p\equiv3\pmod4\),则\(p|z\)
\(3.\)\(p\equiv1\pmod4\),找到\(q\)使得\(q^2\equiv-1\pmod p\),则\(p|\operatorname{norm}(x+i)\wedge p|\operatorname{norm}(p)\),因此\(\gcd(x+i,p)|z\)
\(\gcd\)可以用辗转相除法,我们知道\(p\bmod q=p-\lfloor\frac pq\rfloor q\)\(\lfloor z\rfloor\)根据\(\Re(z),\Im(z)\)分别上/下取整有\(4\)种可能的结果,选择模长最小的即可,不难证明复杂度为\(O(\log |z|)\)
总的时间复杂度为\(O(\frac{n^3\log|z|}{\omega}+n\sqrt{|z|})\)

猜你喜欢

转载自www.cnblogs.com/cjoierShiina-Mashiro/p/12958250.html