首页 > 其他分享 >【2024-ZR-C Day 1】数论基础

【2024-ZR-C Day 1】数论基础

时间:2024-07-17 12:18:13浏览次数:8  
标签:frac pmod bmod 2024 cdot pmatrix Day ZR equiv

1. Ex-GCD

1.1. 定义

若 \((a, b)=1\),则必然存在整数 \(x\) 使得 \(ax \equiv 1 (\bmod b)\).

即:\(ax+by=\gcd(a, b)\),\(x, y\) 必然有解。


1.2. 裴蜀定理

推论:若 \((a, b)=1\),则必然存在整数 \(x, y\) 满足 \(ax + by = 1\).

裴蜀定理:对于 \(a, b \in \mathbb{Z}\),\(\exists x, y: ax + by = (a, b)\).

证明:记 \(d = (a, b), \space a' = \frac{a}{d}, \space b' = \frac{b}{d}\),
由 Ex-GCD 的推论知存在 \(x, y\) 满足 \(a'x+b'y = 1\).
左右同乘 \(d\),得 \(ax + by = d\).


1.3. 求解

如何求出 \(x, y\)?

定义 \(f(a, b)\):给定 \(a, b\),求出任意一组合法的 \(x, y\).

有基本事实:\(a \bmod b = a - \lfloor \frac{a}{b} \rfloor \times b\).
那么考虑通过 \(f(b, a \bmod b)\) 推出 \(f(a, b)\).

记 \(t = \lfloor \frac{a}{b} \rfloor\),则 \(a \bmod b = a-tb\).
\(f(b, a \bmod b)\) 满足方程 \(bx + (a \bmod b) y = d\),即 \(bx + (a - tb) y = d\).
而 \(f(a, b)\) 需要满足的方程为 \(ax' + by' = d\),令 \(x' = y, \space y' = x - ty\) 即可。

void exgcd(int a, int b, int &x, int &y)
{
	if(!b) {x = 1, y = 0; return a;}
	exgcd(b, a % b, y, x);
	int xx = x, yy = y, t = a / b;
	x = yy, y = xx - t * yy;
	return;
}

可以证明,即使 \(a, b \le 10^9\),也绝对不会爆 int.


2. 扩展中国剩余定理(Ex-CRT)

形如以下样式的同余方程组:

\[\begin{cases} x \equiv a_1 \pmod{m_1}\\ x \equiv a_2 \pmod{m_2}\\ \dots \\ x \equiv a_n \pmod{m_n} \end{cases} \]

考虑合并以下方程组:

\[\begin{cases} x \equiv a_1 \pmod{m_1}, \\ x \equiv a_2 \pmod{m_2}. \end{cases} \]

\(x = m_1 \cdot u + a_1 = m_2 \cdot v + a_2\).

\(m_1 \cdot u - m_2 \cdot v = a_2 - a_1 = \gcd(a, b)\).

可以合并出一个新的方程组 \(x \equiv a' \space (\bmod \operatorname{lcm}(m_1, m_2))\).

3. 乘法逆元

3.1. 定义

定义:若 \(ax \equiv 1 \pmod{P}\),则称 \(x\) 为 \(a\) 模 \(P\) 的乘法逆元.


3.2. Wilson 定理

Wilson 定理:给定质数 \(P\),\((P-1)! \equiv -1 \pmod{P}\).

考虑将 \([1, P-1]\) 中的数及逆元两两配对,能配对当且仅当 \(a \ne a^{-1} \pmod{P}\).
即不能配对当且仅当 \(x^2 = 1 \pmod{P}\),只有一个解 \(x = P-1\).
故 \((P-1)! \equiv P - 1 \equiv -1 \pmod{P}\).


3.3. 费马小定理

费马小定理:对于质数 \(P\) 和非 \(0\) 整数 \(a\),\(a^{P-1} \equiv 1 \pmod{P}\).

证明:注意到 \(a, 2a, \ldots, (n-1)a\) 在 \(\bmod P\) 意义下取遍 \([1, P - 1]\) 中所有数,
考虑 \(1 \cdot 2 \cdot 3 \cdots (P - 1) \equiv (1a) \cdot (2a) \cdot (3a) \cdots [(P-1) a]\),
即 \((P - 1)! \equiv a^{P - 1}(P - 1)!\).
由 Wilson 定理得,\(-1 \equiv -1 \cdot a^{P - 1}\).
即 \(a^{P-1} \equiv 1 \pmod{P}\).

由此,\(a^{P - 2} \equiv -1 \pmod{P}\),即为 \(a\) 模 \(P\) 的乘法逆元。


3.4. 欧拉定理

欧拉定理:对于 \((a, m) = 1\),有 \(\varphi(m) \equiv 1 \pmod{m}\).
其中,\(\varphi(m)\) 表示 \([1, m]\) 里和 \(m\) 互质的数的个数。


3.5. 预处理逆元

引入:给定质数 \(P\),多次询问 \(\begin{pmatrix}n \\ m \end{pmatrix} \bmod P\).

\(i! = (i - 1)! \cdot i\),则 \(\frac{1}{(i - 1)!} = \frac{1}{i!} \cdot i\).

注意到 \(\frac{1}{(i - 1)!}\) 和 \(\frac{1}{i!}\) 在 \(\bmod P\) 意义下分别为 \((i - 1)!\) 和 \(i!\) 的逆元,就可以线性预处理阶乘的逆元了。

注意到 \(i = i! \cdot [(i-1)!]^{-1}\),则 \(i^{-1} = \frac{1}{i!} \cdot (i-1)!\).
即可以用阶乘的逆元和阶乘来 \(O(1)\) 计算逆元。

int ifac[N], inv[N], fac[N];

void init(int n)
{
	fac[0] = 1;
	for(int i=  1; i <= n; i++)
		fac[i] = 1ll * fac[i - 1] * i % P;
	ifac[n] = ksm(fac[n], P - 2);
	for(int i = n; i >= 1; i--)
	{
		ifac[i - 1] = 1ll * inv[i] * i % P;
		inv[i] = 1ll * fac[i - 1] * ifac[i] % P;
	}
	return;
}

3.6. Lucas 定理

Lucas 定理:\(\begin{pmatrix}n \\ m \end{pmatrix} \equiv \begin{pmatrix}\lfloor \frac{n}{P} \rfloor \\ \lfloor \frac{m}{P} \rfloor \end{pmatrix} \cdot \begin{pmatrix}n \bmod P \\ m \bmod P \end{pmatrix}\pmod{P}\),其中 \(P\) 是质数.

使用 Lucas 求解的时间复杂度:\(O(\log_P n)\)

在 \(P = 2\) 时的描述:\(\begin{pmatrix}n \\ m \end{pmatrix} \equiv [n \operatorname{\&} m = m] \pmod{2}\).


4. BSGS (Baby Step Gaint Step)

离散对数问题:给定 \(a, b, P\),满足 \((a, P) = 1\),求出一个 \(t\) 使得 \(a^t \equiv b \pmod{P}\)(也即求出模 \(P\) 意义下的 \(log_a b\))。

思考:给定 \(P, a\) 和两个数的集合 \(S, T\),找到一组 \(x \in S, y \in T\) 使得 \(xy \equiv a \pmod{P}\).

上式可以化为 \(x \equiv \frac{a}{y}\). 考虑枚举 \(x\) 的所有取值,将它们放入 Hash 表中;再枚举 \(y\) 的所有取值,查询 Hash 表中是否有此值。时间复杂度 \(O(\max\{|S|, |T|\} \log P)\).

回到原题,令 \(B = \lceil \sqrt{P} \rceil\),取 \(S = \{a^i\}, T = \{a^{B\cdot i}\}\) 即可,其中 $ \le i \le B$. 按照上面思考的方法即可解决问题,时间复杂度 \(O(\sqrt{P} \log P)\).


5. Ex-BSGS

在 BSGS 中,要求了 \((a, P) = 1\),若这两数不互质,如何做?

考虑将 \(a, P\) 转化为互质的。

设 \(d = \gcd(a, P)\),则只需找到方程 \(\frac{a}{d} \cdot a^{x-1} \equiv \frac{b}{d} \pmod{ \frac{P}{d}}\) 的解,即为原方程的解。

原方程即为 \(a^{x-1} \equiv \frac{b}{d} \cdot (\frac{a}{d})^{-1} \pmod{\frac{P}{d}}\).
令 \(b' = \frac{b}{d} \cdot (\frac{a}{d})^{-1}\),原方程化为 \(a^{x-1} \equiv b' \pmod{\frac{P}{d}}\).

不断地进行 \((a, P) \to (a, \frac{P}{d})\),直到 \((a, P) = 1\),即变为普通的 BSGS 问题。


6. 阶与原根

模 \(m\) 的:最小的 \(t\) 使得 \(x^t \equiv 1 \pmod{m}\).
模 \(m\) 的原根:模 \(m\) 的阶为 \(\varphi(m)\) 的数。

原根的本质:取对数将乘法转化成指数上的加法。

一个数 \(m\) 存在原根当且仅当 \(m = 2, 4, p^{\alpha}, 2p^{\alpha}\),其中 \(p\) 为奇素数。、

如何快速判定一个数是否是原根?

引理:一个数模 \(m\) 的阶如果存在,那它一定是 \(\varphi(m)\) 的约数。

设 \(m \ge 3, \space (g, m) = 1\),则 \(g\) 是模 \(m\) 的原根的充要条件是:对于 \(\varphi(m)\) 的每个素因数 \(p\),都有 \(g^{\frac{\varphi(m)}{p}} \ne 1 \pmod{m}\).

推论:若一个数 \(m\) 有原根,则它原根的个数为 \(\varphi(\varphi(m))\).


7. 例题

7.1. P2480 [SDOI2010] 古代猪文

简要题意:求 \(g^{\sum_{d | n} \begin{pmatrix}n \\ d \end{pmatrix}} \mod P\),其中 \(P = 999911659\),是一个质数。

根据欧拉定理的推论,\(g^{\sum_{d | n} \begin{pmatrix}n \\ d \end{pmatrix}} = g^{\sum_{d | n} \begin{pmatrix}n \\ d \end{pmatrix} \mod (P - 1)}\).

可得 \(P - 1 = 999911658 = 2\times 3\times 4679\times 35617\).

分别计算出 \(\sum_{d | n} \begin{pmatrix}n \\ d \end{pmatrix}\) 对以上四个数取模的结果,记为 \(a_1, a_2, a_3, a_4\).

则有方程组

\[\begin{cases} x \equiv a_1 \pmod{2}, \\ x \equiv a_2 \pmod{3}, \\ x \equiv a_3 \pmod{4679}, \\ x \equiv a_4 \pmod{35617}. \end{cases} \]

使用 CRT 解决即可。

标签:frac,pmod,bmod,2024,cdot,pmatrix,Day,ZR,equiv
From: https://www.cnblogs.com/Heartquakes/p/18306492

相关文章

  • 【2024】springboot Home F家居系统的设计与管理
    博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数......
  • UML/SysML建模工具更新情况(2024年7月)共12款,StarUML 6.1.2
    DDD领域驱动设计批评文集做强化自测题获得“软件方法建模师”称号《软件方法》各章合集工具最新版本:PlantUMLv1.2024.6更新时间:2024年7月7日工具简介将文本转换为UML图形,可以在许多其他工具中使用。开源。平台:多平台获得地址https://plantuml.com/工具最新版本:E......
  • 2024年睿抗机器人开发者大赛(RAICOM)CAIP-编程技能赛-本科组省赛
    本人分数:10+15+17+1+30=73 九百多名次,等公布得奖结果之后再贴出来代码情况:前二十分钟进不去,炸掉了,官方补时20minRC-u1热҈热҈热҈ 分数10热҈热҈热҈……最近热得打的字都出汗了!幸好某连锁餐厅开启了气温大于等于35度即可获得一杯免费雪碧的活动。但不知为何,在......
  • 2024牛客暑期多校训练营1 I.Mirror Maze(题解)
    题意给一个\(n\timesm\)的二维char数组,由4种镜子组成,'\','/','-','|',镜面反射规则就是根据光线的方向和镜面的角度符合直觉的反射,然后有多组询问\(q\leq10^6\),每次给定起始位置和光线方向,求该光会经过多少面不同的镜子的反射。思路首先根据数据范围,发现肯定需要预处......
  • vue基础day01(MVVM、绑定、事件、结构模板)
    vue基础一、什么是vue构建用户界面的渐进式框架,采用自底向上逐层应用开发核心理念:数据驱动视图,组件化开发二、框架和库的区别框架:一套完整的解决方案,对项目的侵入性较大,项目如果需要更换框架,需要重新架构整个项目库:提供了一个小的功能,对项目的侵入性较小,如果某个库无......
  • 【App渗透】BurpSuite插件-Brida 2024最新自动加解密Custom plugins演示
    文章目录前言一、测试app的客户端和服务端二、BurpSuite设置代理三、反编译apk文件四、编写brida/fridahook脚本五、Customplugins自动加解密六、本期送书《二进制安全基础》如何领书总结前言之前有写过如何安装brida的文章和视频讲解,大家感兴趣的可以看看之前......
  • 0day 新接口泛微e-cology getHendledWorkflowRequestList SQL注入漏洞
    0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者......
  • 2024年华为OD机试真题-符号运算-(C++/Java/python)-OD统一考试(C卷D卷)
      2024华为OD机试真题目录-(B卷C卷D卷)-【C++JavaPython】    题目描述给定一个表达式,求其分数计算结果。表达式的限制如下:所有的输入数字皆为正整数(包括0)仅支持四则运算(+-*,/)和括号结果为整数或分数,分数必须化为最简格式(比如6,3/4,7/8,90/7)除数可能为0,如果遇到......
  • Day 0
    我8:00与lsh前往济南,在大约11:40左右抵达济南高铁站。等高铁期间,我在庞大的济南高铁站中找到了我心心念念的而DY却没有的赛百味三明治,买了27的西式火腿三明治和34的香烤牛肉三明治,味道实在好极了,买完后偶遇lzc。坐上G181次列车,坐了5个小时,抵达金华,中途有时颓,有时看风景,还有时睡......
  • 题解|2024暑期牛客多校01
    【原文链接】太菜了就先挂4题,其他的写出来了再回来补QwQA.ABitCommon组合数学题目大意题目概括:给定两个整数nnn和m......