简单数论复习

模板有标记。


P5514

\[a+b\ge a\oplus b \]

CF1322B

按位考虑, 两个数的和的第 k 位的取值只与这两个数的低位有关, 所以在考虑从低到高第 k 位(从 0 开始)的时候, 把所有数对 \(2^{k+1}\) 取模。

对于两个取模后的数, 如果要在第 k 位为 1, 和必须在 \([2^k,2^{k+1}-1]\)\([2^{k+1}+2^k, 2^{k+2}-2]\) 中。

双指针计算即可。

记录

P5535

伯特兰-切比雪夫定理

若整数 n > 3, 则至少存在一个质数 p 满足 \(n<p<2n-2\)

另一个稍弱说法是, 若整数 n > 1, 存在一个质数 p 满足 \(n<p<2n\)

对于本题,若 k+1 为质数, 那么第一天不是 k+1 倍数的都将知道, 那么如果 (k+1)*2 > n + 1, 只需一天所有数就都知道了;如果 2~n+1 中有 k+1 的倍数, 那么只需两天, 这是因为相邻数的 gcd 为 1。

若 k+1 不是质数,不会证。

P1072

由于 x 必然为 \(b_1\) 的约数, 所以 x 可能拥有的质因子集合找到了。

然后, 题目的两个约束可以限定质因子的幂次的范围。

然后直接扫过去就行了,可以过。

当然,也可以直接 dfs 求出 \(b_1\) 所有的约数然后一个一个判断。

记录

P2152

高精度!不写了!

P2158

显然同斜率的只有离 C 君最近的才可以被看到。

那么答案就是 \(3+2*\sum\limits_{i=2}^{N-1}\varphi(i)\), 记得特判 n=1。

记录

P2398

\[\sum_{i=1}^n\sum_{j=1}^n \gcd(i,j)\\ \sum_{i=1}^n\sum_{j=1}^n \sum_{d\mid \gcd(i,j)} g(d)\\ \sum_{d=1}^n g(d) \lfloor\frac nd\rfloor^2 \]

关于这个 \(g\)\(id = 1*g\), 那么显然这个 g 是 \(\varphi\)

记录

要记住 \(\varphi(1)=1\)\(\mu(1) = 1\) !!!

P2568

首先枚举 p, 问题变成 \(1\le x,y\le \lfloor n/p\rfloor\) 中互质的 x,y 对数, 可以直接用 \(\varphi\) 搞, 这个是 \(1+2\cdot\sum\limits_{i=2}^{\lfloor n/p\rfloor}\varphi(i)\)

记录

P4139【扩展欧拉定理】

由于 \(2^{2^{2^{\cdots}}}\) 太大,可以直接用扩展欧拉定理。

扩展欧拉定理:

\[\begin{cases} a^b \equiv a^{b\mod \varphi(p)+\varphi(p)}\mod p \quad b\ge \varphi(p)\\ a^b \equiv a^{b\mod \varphi(p)} \mod p\quad b<\varphi(p) \end{cases} \]

直觉上递归不会太多次, 直接在过程中暴力计算 \(\varphi\)

记录

P4549

裴蜀定理可以推广到多个数。

P2613

欧拉定理求逆元的代码测试题。

P3811【模数为质数时预处理逆元】

当 mod 为质数时,可用:

inv[1] = 1;
for (int i = 2; i < mod; ++ i)
	inv[i] = (mod - mod / i) * inv[mod % i] % mod;

这样推导:

\[p = ki+r\\ ki + r \equiv 0\mod p\\ r\equiv -ki\mod p\\ i^{-1}\equiv -kr^{-1} \mod p \]

P5431【预处理一堆逆元】

求前缀乘积, 然后求全乘起来的逆元, 然后这个可以用来求前缀乘积的逆元。

然后前缀乘积的逆元和前缀乘积可以组合成逆元。

总复杂度 \(O(n+\log w)\)

P3951【小凯的疑惑/同余最短路】

著名的小凯的疑惑。

介绍看到的用同余最短路理解的方法。

首先关于同余最短路:

lg2371

记录

\(a<b\), 模拟一下同余最短路的过程:

\(0\to b\mod a \to 2b \mod a\to \cdots\to (a-1)b\mod a\to 0\)

对于膜 a 的等价类, 都有一个最小的可以被表示出来的数, 把这个数减去 a 就是最大的不可以被表示出来的数(仅限当前等价类)。

观察上面那个最短路的过程, 可以发现每个点被遍历到的时候都是走的最短路, 所以本题的答案显然就是 \((a-1)b-a\) 也就是传说中的 \(ab-a-b\)

P1082

基本的 exgcd

记录

P1516【exgcd】

\[x+km\equiv y+kn \mod L\\ x+km = y+kn +qL\\ (m-n)k-qL = y-x \]

基础练习题

记录

P3846【BSGS】

也就是离散对数, 直接分块搞。

记录

P6091【原根】

求所有原根, 需要先求最小原根, 然后对于与模数的 φ 互质的数, 将它们作为最小原根的次数, 可以得到所有原根。

记录

P5491【二次剩余】

rqy的介绍

抄一下。

以下 p 都指奇素数。

\(a\)\(\mod p\) 意义下的二次剩余(感性记忆就是 “可开方的”), 如果存在 \(b\in\mathbb F_p\) 使得 \(b^2 = a\)

性质:

  1. \(1,...,p-1\) 中恰有一半二次剩余。

    设 g 是 \(\mathbb F_p\) 的原根 ,那么二次剩余恰为 \(g^0,g^2,g^4,\dots,g^{p-3}\)

    稍微解释一下,这是因为 \(\mathbb F_p\) 中的所有数都可以用 g 的幂次表示, 而由于 g 是最小原根,所以 g 不可开方。

  2. xy 是二次剩余当且仅当 x,y 都是或都不是二次剩余。

    结合上面的比较显然。

  3. \((\frac ap)\) (Legendre symble) 为:

    \[\]

    \begin{cases}
    0\quad ;;;a\equiv 0\
    1\quad ;;;a 是二次剩余\
    -1\quad a 不是二次剩余
    \end{cases}

    \[\]

    如果 \(a=g^u\), 那么 \(a^{(p-1)/2} = g^{u(p-1)/2}\), u 为偶数的时候, 显然这个式子等于 1, 反之, 等于 -1。这是因为 \(g^{(p-1)/2}\equiv -1\)。(猜的)

Cipolla 算法

现在的问题是, 已知 n 是二次剩余, 如何求出一个 \(x\in\mathbb F_p\) 使得 \(x^2 = n\)

首先找到一个 \(a\in \mathbb F_p\) 使得 \(a^2-n\) 不是二次剩余。

可以随机 a, 可以证明满足条件的 \(a\)\(\frac{p-1}2\) 个, 所以期望 \(\frac{2p}{p-1}\approx 2\) 次就可以找到一个。(暂时不会证)

接下来以 \(a^2-n\) 作为类似复数域的虚部 \(i^2\) 的东西造一个类似复数域的东西,考虑扩域 \(\mathbb F_p[\sqrt{a^2-n}]\), 其由所有形如 \(u+v\sqrt{a^2-n}\) 的数组成,其中 \(u,v\in\mathbb F_p\)。记 \(\alpha = \sqrt{a^2-n}\), 那么域中的数即为 \(u+v\alpha\)

在这个域中,有一些性质:

  1. \((x+y)^p = x^p+y^p\)(可用二项式定理展开后证明, 实际上,任何每个元素的 p 倍都是 0 的域中, 这个性质都成立)
  2. \(\alpha^p = -\alpha\)。因为 \(\alpha^p = (a^2-n)^{(p-1)/2}\alpha = -\alpha\)

现在令 \(x = (a+\alpha)^{(p+1)/2}\)

那么:

\[x^2 = (a+\alpha)^{p+1}\\ = (a+\alpha)^p(a+\alpha)\\ = (a-\alpha)(a+\alpha)\\ = a^2-\alpha^2 = n \]

于是现在在 \(\mathbb F_p[\sqrt{a^2-n}]\) 中求得了 \(x^2=n\) 的一个解 \(x\)。还需要说明 \(x\) 一定属于 \(\mathbb F_p\)

这个等价于证 \(x\) 的虚部为 0, 反证法即可。

记录

P2485

记录

P3306

细节太多先咕着。

P4884

\[(10^N-1)/9 \equiv K \mod m \]

记录

分配律的大膜数乘法比较靠谱, 那个用 double 的比较看不懂。

posted @ 2021-03-28 08:39  xwmwr  阅读(166)  评论(1编辑  收藏  举报