exBSGS

简单回顾,方程式为Ax≡BmodPA^x\equiv B\ mod\ PAx≡B mod P

首先,我们知道了如何n\sqrt nn​ 处理当 A,PA,PA,P 互质的情况。但是,如何推广到 PPP 为任意正整数的情况呢?这就是exBSGSexBSGSexBSGS了。

讲解

方程写为等式形式:Ax+kP=BA^x+kP=BAx+kP=B
此时,gcd(A,P)!=1gcd(A,P)!=1gcd(A,P)!=1,设其为 t=gcd(A,P)t=gcd(A,P)t=gcd(A,P),那么若 BBB不整除 ttt 则方程无解。

将 ttt 除掉,化为:AtAx−1+kPt=Bt\frac{A}{t}A^{x-1}+k\frac{P}{t}=\frac{B}{t}tA​Ax−1+ktP​=tB​

那么一直除 gcd(A,P′)gcd(A,P')gcd(A,P′) 直到 gcd(A,P′)=1gcd(A,P')=1gcd(A,P′)=1 为止。

而上面的式子在迭代互质,除掉 ∏ti\prod ti∏ti 后可以用普通BSGS做。然后还原回去就行了。

Code:

map<LL, LL> Map;
inline void ExBsGs()
{A %= P; B %= P;if (B == 1){printf("0\n");return ;}Map.clear();LL m = ceil(sqrt( P ));LL At = 1, t = Gcd(A, P), tot = 0;while (t ^ 1){if (B % t){printf("No Solution\n");return ;}tot ++;B /= t; P /= t;At = At * A / t % P;if (B == At){printf("%lld\n", tot);return ;}t = Gcd(A, P);}LL Ans = B;Map[Ans] = 0;for (Int i = 1; i < m; ++ i){Ans = (Ans * A) % P;Map[Ans] = i;}LL Y = QuickPow(A, m); Ans = At;for (Int i = 1; i <= m; ++ i){Ans = Ans * Y % P;if ( Map[Ans] ){LL S = i * m - Map[Ans];printf("%lld\n", S + tot);return ;}}printf("No Solution\n");

[数论] EXBSGS(拔山盖世算法)相关推荐

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

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

  2. CodeForces 359D (数论+二分+ST算法)

    题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...

  3. 数学--数论---P4718 Pollard-Rho算法 大数分解

    P4718 [模板]Pollard-Rho算法 题目描述 MillerRabin算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接受的.Pollar ...

  4. [HDU](6333)Problem B. Harvest of Apples ---- 数论+莫队算法

    Problem Description There are n apples on a tree, numbered from 1 to n. Count the number of ways to ...

  5. 数论四大定理----算法详析

    数论 (数学分支) 数论是纯粹数学的分支之一,主要研究整数的性质.整数可以是方程式的解(丢番图方程).有些解析函数(像黎曼ζ函数)中包括了一些整数.质数的性质,透过这些函数也可以了解一些数论的问题.透 ...

  6. 同余(数论) AcWing算法课

    欧拉函数 873. 欧拉函数

  7. 质数,约数(数论) AcWing算法课

    SummarySummarySummary 质数的判定 : 1.试除法O(n)O(\sqrt{n})O(n​) 分解质因数 : 1.试除法O(n)O(\sqrt{n})O(n​) 2.当一系列数相乘( ...

  8. 算法导论之有关数论的算法

    关于数论,想到的就是密码系统和大素数.大素数的易求和因子分解的高难度是密码系统安全性的数学基础.输入一个大的整数,用位操作次数来衡量数论算法的时间性能. 1)初等数论概念 关于整数集合Z={-,-2, ...

  9. 《算法竞赛进阶指南》数论篇

    <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...

最新文章

  1. pygame显示图片的方法_使用Pygame进行游戏开发(1)
  2. fiery服务器系统安装,Fiery_SC5500_服务器安装步骤.pdf
  3. 成功解决ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
  4. 010 自动技能的设计和实现
  5. minwindow java_Java经典算法:最小窗口子字符串
  6. 读懂这篇文章,你的阿里技术面就可以过关了 | Apache RocketMQ 101
  7. 如何访问云端的tcpserver_Swoole: TcpServer+SocketServer+EMQTT组合,实现基础设备控制
  8. linux driver开发
  9. 【SRH】------node创建简单的服务器
  10. 网络安全管理的“模拟人生”
  11. 断言assert的使用
  12. 软件工程第二次自考总结(2020年8月)
  13. mysql的函数的写法_mysql中分组函数的写法
  14. tensorflow获取tensor的shape
  15. 【理财】富爸爸穷爸爸
  16. DELL服务器硬件报错及对应的解决方法(R710)
  17. 信用评分卡 Week3(2)
  18. 智能手机屏幕失灵了,怎么办?
  19. 个人总结:Mysql知识图谱
  20. 如何避免渠道商的“养卡”和“劝弃卡”行为的发生

热门文章

  1. win7计算机文件夹显示布局,使用Windows7巧妙管理文件夹的图文介绍
  2. base64格式图片直接显示
  3. 计算机技术变化太快,这世界变化太快!Ps修图进入“智能时代”!
  4. 干货 | Reactive模式在Trip.com消息推送平台上的实践
  5. iOS音视频实现边下载边播放
  6. linux的历史演绎
  7. 微信公众号怎么生成能追踪效果的二维码?
  8. 爆款短视频封面的三个核心要素
  9. Google Ad加大型文字广告将停用
  10. [Asp.Net Core]鉴权授权