首页 > 其他分享 >N

N

时间:2022-09-24 13:59:28浏览次数:41  
标签: 1p frac gcd pmod varphi equiv

exgcd

\(ax + by = c\)

  • 裴蜀定理:\(\exist x,y ,ax + by = gcd(a,b)\)

证明简单,那么必然满足 \(gcd(a,b)|c\)
然后只需要求出 \(ax + by = gcd(a,b)\) 的一组解即可
在欧几里得算法进行的过程中,最后一步结果取 \(x=0,y=1\) 就是满足的
\(xb+y(a\%b) = gcd(a,b)\)
\(xb+y(a\%b) = xb+y(a-b\lfloor{\frac{a}{b}}\rfloor) = ya + (x-\lfloor{\frac{a}{b}}\rfloor)b\)
那么可以迭代求解

中国剩余定理

\(\begin{equation}\begin{cases}x \equiv a_1 \pmod{p_1}\\x \equiv a_2 \pmod{p_2} \\ \dots \\ x \equiv a_n \pmod{p_n} \end{cases}\end{equation}\)

对于 \(p_1 \dots p_n\) 两两互质的情况

我们令 \(M = \prod\limits_{i=1}^{n}p_i\)

令 \(t_i\frac{M}{p_i} \equiv 1 \pmod{p_i}\)

那么容易验证一个解就是 \(\prod\limits_{i=1}^{n}\frac{M}{p_i}t_i\)

但是倘若 \(p\) 不两两互质,这个做法就会出问题,那么考虑每次合并两个同余式为一个新的同余式

\(x \equiv a_1 \pmod{p_1}\\x \equiv a_2 \pmod{p_2}\)

令 \(t = gcd(p_1,p_2)\)

考虑在模 \(\frac{p_1p_2}{t}\) 意义下,相当于式子

\(a_1 + k_1\frac{p_2}{t} = a_2 + k_2\frac{p_1}{t}\)

的一组解 \(k_1,k_2\),而这个是一个 exgcd 的形式

那么可以将两式合并为

\(x \equiv a_1 + k_1\frac{p_2}{t} \pmod{\frac{p_1p_2}{t}}\)

最后剩下的问题是,为什么 \(\frac{p_1p_2}{t}\) 中只存在一组解

对于两个解,一个是 \(x_1\) ,一个是 \(x_2\)

那么 \(x_2 = x_1+k_1p_1,x_2 = x_1 + k_2p_2\)

不难发现 \(k_1p_1 = k_2p_2\),那么 \(\frac{p_1p_2}{t} | k_1p_1\)

BSGS

\(a^x \equiv b \pmod{p}\)

当 \(gcd(a,p) = 1\) 时

由欧拉定理 \(x \le \varphi(p)\)

我们注意到每个 \(x\) 都能表示成 \(kB+b\)

那么预处理出前 \(B\) 个然后枚举 \(k\) 在 map 里查询即可

复杂度 \(O(B+\frac{\varphi(p)}{B})\)

而对于 \(gcd(a,p) \neq 1\) 的情况

令 \(t = gcd(a,p)\)

则 \(\frac{a}{t}a^{x-1} \equiv \frac{b}{t} \pmod{\frac{p}{t}}\)

注意到若 \(t \nmid b\) 则无解

然后迭代直至 \(gcd(a,\frac{p}{t_1 \dots t_k}) = 1\)

N次剩余
\(x^a \equiv b \pmod{p}\)

首先将 \(p\) 拆分为 \(p = \prod\limits_{}p_i^{q_i}\)

对于每一个 \(p_i^{q_i}\) 求解,然后中国剩余定理合并即可

\(x^a \equiv b \pmod{p^q}\)

  1. \(p^q | b\)

\(x^a \equiv 0 \pmod{p^q}\),只要满足 \(p^{\lceil\frac{q}{a}\rceil}|x\) 即可

  1. \(p \neq 2\)

    令 \(t = gcd(p^q,b)\)

    \(\frac{x^a}{t} \equiv \frac{b}{t} \pmod{\frac{p^q}{t}}\)

    那么只需要保证 \(x\) 是某个最小的数 \(m\) 满足 \(t|m^a\) 的倍数即可

    接下来就变为 \(gcd(p^q,b) = 1\) 的情况了

    此时找到 \(p^q\) 的一个原根 \(g\)

    那么 \(\frac{b}{t}\) 能表示成 \(g^{b_0}\),两边以 \(g\) 为底取对数

    \(xa \equiv b_0 \pmod{\varphi(\frac{p^q}{t})}\)

    当然我们可以用 exgcd 找出通解 \(x_0+k\frac{\varphi(\frac{p^q}{t})}{gcd(a,\varphi(\frac{p^q}{t}))}\)

    然后看有多少是 \(m\) 的倍数,因为 \(m\) 必然也是 \(p\) 的次幂,这一点好做到

  2. \(p=2^p\)

    \(2^q\) 没有原根,因此需要特殊处理

    然后我们考虑对于每个 \(k\) 算出 \(x^a \equiv b \pmod{2^k}\) 的解

    能够发现,对于 \(k+1\) 处的解必然形如 \(x\) 或 \(x+2^k\),那么暴力即可

    但是具体复杂度没法证明

标签:,1p,frac,gcd,pmod,varphi,equiv
From: https://www.cnblogs.com/zaozao-zmx/p/16725516.html

相关文章