BSGS 大步小步算法
BSGS 大步小步算法,也叫拔山盖世算法,实质也是就利用分块+预处理的方式,来高效的解决 Ax≡B(modC)A^x\equiv B (modC)Ax≡B(modC) 求最小的x 的问题。求中 C 为质数,对 C 不是质数的情况要用到 EXBSGS 即扩展大步小步算法。(待更)
对于 C 为质数的情况 则 A,C 互质。 根据扩展欧几里得的定理 Ax≡Axmodϕ(C)(modC)A^x\equiv A^{x\mod \phi(C)} \ (mod\ C)Ax≡Axmodϕ(C) (mod C)
C为质数 ϕ(C)=C−1\phi(C)=C-1ϕ(C)=C−1 , 所以对于上述 x 如果有解则一定存在 <=C 的解。
令 m=ceil(sqrt(C))m=ceil(sqrt(C))m=ceil(sqrt(C)) ceil 是向上取整。
则x可表示为 x=i∗m−jx=i*m-jx=i∗m−j(1<=i<=m,0<=j<m1<=i<=m,0<=j<m1<=i<=m,0<=j<m) i 最大到m就行了,因为有解的话次幂不会超过 C.
则原式可以化为 Ai∗m−j≡B(modC)A^{i*m-j}\equiv B (modC)Ai∗m−j≡B(modC)
Ai∗m≡Aj∗B(modC)A^{i*m}\equiv A^j*B (modC)Ai∗m≡Aj∗B(modC)
因为要找最小的x, x的大小主要是有 i 决定,所以我们可以先预处理 A^j * B % C (0<=j<m) 存到 map中,或者手写hash,然后枚举 i 找到最小的 满足 Ai∗m≡Aj∗B(modC)A^{i*m}\equiv A^j*B (modC)Ai∗m≡Aj∗B(modC) 就行了。 x=i*m-j。时间复杂度 O(n\sqrt{n}n)
BSGS 大步小步算法相关推荐
- 与数论的厮守03:大步小步算法
这是个名字很新奇的算法.它用来求方程axΞb(mod c)的最小非负整数解,其中ac互质. 先看欧拉定理:aΦ(c)Ξ1(mod c).所以x肯定在0~Φ(c)-1里面.所以我们可以考虑枚举x.但显然 ...
- Shank的大步小步算法(Shank‘s Baby-Step-Giant-Step Algorithm)
1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> ...
- NOI数学:大步小步(Baby Step Giant Step,BSGS)算法
BSGS算法求 高次同余方程:1.可爱的质数 2.计算器 BSGS算法求 高次同余方程:1.可爱的质数 2.计算器_啦啦啦32421的博客-CSDN博客 大步小步算法(BSGS)及扩展 & b ...
- BSGS(拔山盖世算法),北上广深算法
1.引入 BSGS算法又名拔山盖世算法,也叫北上广深算法,也叫大步小步算法,总之就是名字很多了,但是实际上他就是一个解决同余方程 给定a,b,p,求最小的非负整数x,满足 ax ≡ b(mod p) ...
- Discrete Logging ZOJ - 1898 (模板题大小步算法)
就是求Ax三B(mod C)当C为素数时 #include<cstdio> #include<cstring> #include<cmath> #include&l ...
- 【学习笔记】原根 / BSGS / 扩展BSGS证明及模板
文章目录 原根 BSGS大步小步算法 扩展BSGS 原根 如果两个整数a,ba,ba,b互质,则有aϕ(b)%b=1a^{\phi(b)}\%b=1aϕ(b)%b=1 定义模bbb意义下的aaa的阶为 ...
- 初等数学瞎扯Ⅰ:同余相关
写在前面: 还在写qwq,NOIP之前应该会写到exCRT及以后,但是省选数论比如 Lucas 扩展 Lucas 还有原根二次剩余这些东西可能要等到NOIP以后了. 关于题目我也没有做过多少,具体可以 ...
- bsgs(Baby Steps Giant Steps)算法
BSGS算法(Baby Steps Giant Steps算法,大步小步算法,北上广深算法,拔山盖世算法) 适用问题 对于式子: $$x^y=z(mod_p)$$ 已知x,z,p,p为质数: 求解一个 ...
- 算法笔记——数学相关
算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...
最新文章
- 脑机接口成唯一沟通方式,渐冻症晚期父亲终向4岁儿子表达爱意
- 机器学习导论(张志华):主元分析
- appfog mysql_appfog java jdbc mysql连接
- linux 怎么样复制文件夹内所有文件到另一个文件夹?
- 任务调度之Quartz2
- 论文浅尝 | 用增强学习进行推理:问答与知识库完善(KBC)
- python在无人驾驶上的应用_无人驾驶(ADAS)方向的python软件工程师应具备哪些python模块的知识?...
- 尚硅谷和尚学堂的区别_在北京尚学堂学习的009天
- Resharper进阶一:简要介绍
- 画出多项式的硬件编码_信息论与编码习题解答.doc
- yii2 GridView全选、反选
- java double 丢精度_Java中double类型精度丢失的问题
- AD学习之旅(9)— 新建PCB封装库
- aforge 相机标定_c# – Aforge.net相机捕获并将图像保存到目录
- 连接数据库超时设置autoReconnect=true,默认重试次数调整
- siri快捷指令_入门的最佳Siri快捷方式
- 有心杀贼,无力回天出处
- 彩虹秒赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制
- Cisco-EIGRP分析总结
- 获取webservice(wsdl)数据包