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 大步小步算法相关推荐

  1. 与数论的厮守03:大步小步算法

    这是个名字很新奇的算法.它用来求方程axΞb(mod c)的最小非负整数解,其中ac互质. 先看欧拉定理:aΦ(c)Ξ1(mod c).所以x肯定在0~Φ(c)-1里面.所以我们可以考虑枚举x.但显然 ...

  2. Shank的大步小步算法(Shank‘s Baby-Step-Giant-Step Algorithm)

    1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <map> ...

  3. NOI数学:大步小步(Baby Step Giant Step,BSGS)算法

    BSGS算法求 高次同余方程:1.可爱的质数 2.计算器 BSGS算法求 高次同余方程:1.可爱的质数 2.计算器_啦啦啦32421的博客-CSDN博客 大步小步算法(BSGS)及扩展 & b ...

  4. BSGS(拔山盖世算法),北上广深算法

    1.引入 BSGS算法又名拔山盖世算法,也叫北上广深算法,也叫大步小步算法,总之就是名字很多了,但是实际上他就是一个解决同余方程 给定a,b,p,求最小的非负整数x,满足  ax ≡ b(mod p) ...

  5. Discrete Logging ZOJ - 1898 (模板题大小步算法)

    就是求Ax三B(mod C)当C为素数时 #include<cstdio> #include<cstring> #include<cmath> #include&l ...

  6. 【学习笔记】原根 / BSGS / 扩展BSGS证明及模板

    文章目录 原根 BSGS大步小步算法 扩展BSGS 原根 如果两个整数a,ba,ba,b互质,则有aϕ(b)%b=1a^{\phi(b)}\%b=1aϕ(b)%b=1 定义模bbb意义下的aaa的阶为 ...

  7. 初等数学瞎扯Ⅰ:同余相关

    写在前面: 还在写qwq,NOIP之前应该会写到exCRT及以后,但是省选数论比如 Lucas 扩展 Lucas 还有原根二次剩余这些东西可能要等到NOIP以后了. 关于题目我也没有做过多少,具体可以 ...

  8. bsgs(Baby Steps Giant Steps)算法

    BSGS算法(Baby Steps Giant Steps算法,大步小步算法,北上广深算法,拔山盖世算法) 适用问题 对于式子: $$x^y=z(mod_p)$$ 已知x,z,p,p为质数: 求解一个 ...

  9. 算法笔记——数学相关

    算法笔记--数学相关 高精度 乘法逆元 排列组合 二项式定理 质数的判定和应用 约数 拓展欧几里得 大步小步算法(BSGS) 拓展大步小步算法 快速乘和快速幂 矩阵相关 欧拉函数 欧拉定理及费马小定理 ...

最新文章

  1. 脑机接口成唯一沟通方式,渐冻症晚期父亲终向4岁儿子表达爱意
  2. 机器学习导论(张志华):主元分析
  3. appfog mysql_appfog java jdbc mysql连接
  4. linux 怎么样复制文件夹内所有文件到另一个文件夹?
  5. 任务调度之Quartz2
  6. 论文浅尝 | 用增强学习进行推理:问答与知识库完善(KBC)
  7. python在无人驾驶上的应用_无人驾驶(ADAS)方向的python软件工程师应具备哪些python模块的知识?...
  8. 尚硅谷和尚学堂的区别_在北京尚学堂学习的009天
  9. Resharper进阶一:简要介绍
  10. 画出多项式的硬件编码_信息论与编码习题解答.doc
  11. yii2 GridView全选、反选
  12. java double 丢精度_Java中double类型精度丢失的问题
  13. AD学习之旅(9)— 新建PCB封装库
  14. aforge 相机标定_c# – Aforge.net相机捕获并将图像保存到目录
  15. 连接数据库超时设置autoReconnect=true,默认重试次数调整
  16. siri快捷指令_入门的最佳Siri快捷方式
  17. 有心杀贼,无力回天出处
  18. 彩虹秒赞7.8源码破解版(去域名授权) 彩虹云任务系统无任何限制
  19. Cisco-EIGRP分析总结
  20. 获取webservice(wsdl)数据包

热门文章

  1. 集群使用calico的bgp+ipip混合模式部署
  2. ICP许可证过期了还能补办吗
  3. 百度云(网)加速器下载
  4. 解决Google浏览器打开页面速度太慢问题
  5. PDF如何插入空白页?3 次点击在PDF中插入空白页!
  6. python小于100的所有合数,python输出100以内的质数与合数
  7. 跳台阶,有多少种跳法
  8. 3Dmax 常用-概念理解
  9. 初识基于搜索的软件工程
  10. 堆叠横向柱状图顶部显示数值和