[数论] EXBSGS(拔山盖世算法)
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}tAAx−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(拔山盖世算法)相关推荐
- BSGS(拔山盖世算法),北上广深算法
1.引入 BSGS算法又名拔山盖世算法,也叫北上广深算法,也叫大步小步算法,总之就是名字很多了,但是实际上他就是一个解决同余方程 给定a,b,p,求最小的非负整数x,满足 ax ≡ b(mod p) ...
- CodeForces 359D (数论+二分+ST算法)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=47319 题目大意:给定一个序列,要求确定一个子序列,①使得该子序 ...
- 数学--数论---P4718 Pollard-Rho算法 大数分解
P4718 [模板]Pollard-Rho算法 题目描述 MillerRabin算法是一种高效的质数判断方法.虽然是一种不确定的质数判断法,但是在选择多种底数的情况下,正确率是可以接受的.Pollar ...
- [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 ...
- 数论四大定理----算法详析
数论 (数学分支) 数论是纯粹数学的分支之一,主要研究整数的性质.整数可以是方程式的解(丢番图方程).有些解析函数(像黎曼ζ函数)中包括了一些整数.质数的性质,透过这些函数也可以了解一些数论的问题.透 ...
- 同余(数论) AcWing算法课
欧拉函数 873. 欧拉函数
- 质数,约数(数论) AcWing算法课
SummarySummarySummary 质数的判定 : 1.试除法O(n)O(\sqrt{n})O(n) 分解质因数 : 1.试除法O(n)O(\sqrt{n})O(n) 2.当一系列数相乘( ...
- 算法导论之有关数论的算法
关于数论,想到的就是密码系统和大素数.大素数的易求和因子分解的高难度是密码系统安全性的数学基础.输入一个大的整数,用位操作次数来衡量数论算法的时间性能. 1)初等数论概念 关于整数集合Z={-,-2, ...
- 《算法竞赛进阶指南》数论篇
<算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSGS <算法竞赛进阶指南>数论篇(1)-最大公约数,素数筛,欧拉函数,同余,欧拉定理,BSG ...
最新文章
- pygame显示图片的方法_使用Pygame进行游戏开发(1)
- fiery服务器系统安装,Fiery_SC5500_服务器安装步骤.pdf
- 成功解决ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
- 010 自动技能的设计和实现
- minwindow java_Java经典算法:最小窗口子字符串
- 读懂这篇文章,你的阿里技术面就可以过关了 | Apache RocketMQ 101
- 如何访问云端的tcpserver_Swoole: TcpServer+SocketServer+EMQTT组合,实现基础设备控制
- linux driver开发
- 【SRH】------node创建简单的服务器
- 网络安全管理的“模拟人生”
- 断言assert的使用
- 软件工程第二次自考总结(2020年8月)
- mysql的函数的写法_mysql中分组函数的写法
- tensorflow获取tensor的shape
- 【理财】富爸爸穷爸爸
- DELL服务器硬件报错及对应的解决方法(R710)
- 信用评分卡 Week3(2)
- 智能手机屏幕失灵了,怎么办?
- 个人总结:Mysql知识图谱
- 如何避免渠道商的“养卡”和“劝弃卡”行为的发生