【笔记】数论:同余相关 2023.7.29
7.29 数论
扩欧、中国剩余定理、乘法逆元、卢卡斯定理、BSGS、阶和原根的英文名分别是 exGCD, exCRT, Inverse, Lucas, BSGS, Primitive root。
exGCD
前置知识
- 定理:若
,则 , 互不相同,有一个是 。证明: 则 ,因为 ,所以 ,但是 。 - 扩展:若
,则 , 的结果是 个模 的剩余系,即结果是 重复 次。 - 推论:若
,则存在 。 - 裴蜀定理:
有解(两边同除 ,推论) 。所以 的复杂度为 。 就是写成了 的线性组合(如果 是常数)
做法
欲求
细节
为什么不会爆 int
?swap
了),前一个明显,后一个
解出来的特解
一般情况
exGCD 可以求出形如
由裴蜀定理得,如果
否则,等式两边同时乘
考虑这么一个式子,它和原方程等价:
显然
所以
code
LL mod(LL x, LL m) { return (x % m + m) % m; }
LL exgcd(LL a, LL b, LL c, LL& x, LL& y) {
if (!b) return x = c / a, y = 0, a;
LL res = exgcd(b, a % b, c, y, x);
return y -= a / b * x, res;
}
LL solve(LL a, LL b, LL c) {
LL x, y, d = exgcd(a, b, c, x, y);
return c % d == 0 ? mod(x, b / d) : -1;
}
调用 solve(a, b, c)
能求得
solve(n, P, 1)
。
(ex)CRT
problem
求这个关于
CRT
适用范围:
做法:令
答案是
证明:考虑求
逆元请用 exgcd。
exCRT
exCRT 不依赖于两两互质。(ex)CRT 给出的解集一定是
考虑增量构造,我们合并两个线性同余方程组。
所以解方程
以下是另外一种理解方法。考虑暴力增量构造。现在考虑的方程组的
考虑优化,设要加
例题
例题:https://www.luogu.com.cn/problem/P4774
因为
乘法逆元
定义
前置知识
威尔逊定理:
费马小定理:质数
欧拉定理:对于
求法和应用
求法:exGCD(与模数互质)或者费马小定理(
线性求逆元:需要逆元存在,
例题:给定质数
例题:给
有一种特殊的求
对于整数
Lucas
形式
质数
证明
二项式定理:
引理:
使用生成函数证明原命题:
应用
(n & m) == m
例题:https://www.luogu.com.cn/problem/solution/P2480 对
BSGS
离散对数问题:
当
大概写一下 BSGS 的过程,就是令
阶与原根
定义
模
求法
一个数
引理:一个数模
设
推论:若一个数
auto divide(int m) {
vector<int> vec;
for (int i = 2; i * i <= m; i++) {
if (m % i) continue;
vec.push_back(i);
while (m % i == 0) m /= i;
}
if (m > 1) vec.push_back(m);
return vec;
}
template <class mint>
mint findrt() { // mint::mod is a prime
auto dvs = divide(mint::mod - 1);
for (int g = 1; g < mint::mod; g++) {
auto chk = [&]() {
for (int p : dvs) {
if (qpow(mint(g), (mint::mod - 1) / p) == 1) {
return false;
}
}
return true;
};
if (chk()) return g;
}
throw "No solution";
}
应用
AGC047C:
本文来自博客园,作者:caijianhong,转载请注明原文链接:https://www.cnblogs.com/caijianhong/p/17589598.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】