简单数论复习

模板有标记。


P5514

[a+bge aoplus 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*sumlimits_{i=2}^{N-1}varphi(i)), 记得特判 n=1。

记录

P2398

[sum_{i=1}^nsum_{j=1}^n gcd(i,j)\ sum_{i=1}^nsum_{j=1}^n sum_{dmid gcd(i,j)} g(d)\ sum_{d=1}^n g(d) lfloorfrac nd floor^2 ]

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

记录

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

P2568

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

记录

P4139【扩展欧拉定理】

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

扩展欧拉定理:

[egin{cases} a^b equiv a^{bmod varphi(p)+varphi(p)}mod p quad bge varphi(p)\ a^b equiv a^{bmod varphi(p)} mod pquad 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 0mod p\ requiv -kimod p\ i^{-1}equiv -kr^{-1} mod p ]

P5431【预处理一堆逆元】

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

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

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

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

著名的小凯的疑惑。

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

首先关于同余最短路:

lg2371

记录

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

(0 o bmod a o 2b mod a o cdots o (a-1)bmod a o 0)

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

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

P1082

基本的 exgcd

记录

P1516【exgcd】

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

基础练习题

记录

P3846【BSGS】

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

记录

P6091【原根】

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

记录

P5491【二次剩余】

rqy的介绍

抄一下。

以下 p 都指奇素数。

(a)(mod p) 意义下的二次剩余(感性记忆就是 “可开方的”), 如果存在 (binmathbb 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) 为:

    []

    egin{cases}
    0quad ;;;aequiv 0
    1quad ;;;a 是二次剩余
    -1quad 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 是二次剩余, 如何求出一个 (xinmathbb F_p) 使得 (x^2 = n)

首先找到一个 (ain 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+vsqrt{a^2-n}) 的数组成,其中 (u,vinmathbb F_p)。记 (alpha = sqrt{a^2-n}), 那么域中的数即为 (u+valpha)

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

  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 的比较看不懂。

原文地址:https://www.cnblogs.com/tztqwq/p/14587757.html