exBSGS算法】的更多相关文章

BSGS,全称\(Baby Step Giant Step\),是用于求解离散对数的一种算法. 就是用来求\(A^x \equiv B (mod\ p)\) 的x这么一种算法-- 理论知识是:在[0,p)之内是一定有解的,因为指数模的周期性.即\(A^x\)对p的模随x变化有周期性,最大周期不超过p.首先,余数只可能有p个元素,所以x取不超过p个值必定出现相同的余数.根据同余的性质,只要找到两个余数相同的,剩下的全部乘以\(A^k,k\)为整数,所以\(A^n \equiv A^{x+n}\)对…
BSGS 引入 求解关于\(X\)的方程, \[A^X\equiv B \pmod P \] 其中\(Gcd(A,P)=1\) 求解 我们令\(X=i*\sqrt{P}-j\),其中\(0<=i,j<=\sqrt{P}\) 则原式可以变为: \[A^X\equiv B \pmod P \] \[A^{i*\sqrt{P}-j}\equiv B \pmod P \] 由于\(Gcd(A,P)=1\),则可以恒等变化为: \[A^{i*\sqrt{P}}\equiv B*A^j \pmod P \…
高次同余方程 一般来说,高次同余方程分\(a^x \equiv b(mod\ p)\)和\(x^a \equiv b(mod\ p)\)两种,其中后者的难度较大,本片博客仅将介绍第一类方程的解决方法. 给定\(a,b,p\),其中\(gcd(a,p)=1\),求方程\(a^x \equiv b(mod\ p)\)的最小非负整数解. 普通分析和朴素算法 先介绍一下欧拉定理: 如果正整数\(a\),\(p\)互质,则\(a^{\phi(p)}\equiv1(mod\ p)\). 注意到题中所给的条件…
好像有不少更新:) 本文主要记录一些不是那么熟悉的高级数论算法的推导与应用. exBSGS算法 解决模数.底数不互质的离散对数问题. (1)为何\(BSGS\)算法不再适用:\(A\)不一定存在逆元,而且无法保证解的循环性. (2)无解的结论: 设方程为\(A^x=B \pmod{P}\) 当 \((A,P) \nmid B\)且\(B\ne 1\) 时,原方程无自然数解. 还有就是\(A=0,B≠0\)这种. (3)算法流程: 先判无解. 然后若\(B=1\),显然\(x=0\),特判之. 否…
点此看题面 大致题意: 让你完成三种操作:求\(Y^Z\%P\)的值,求满足\(XY\equiv Z(mod\ P)\)的最小非负整数\(X\),求满足\(Y^X\equiv Z(mod\ P)\)的最小非负整数\(X\). 关于三个模板 只要你熟悉各类数学模板,就应该不难看出,其实这就是一道数学模板三合一. 第一个任务,显然是快速幂. 第二个任务,可是徐xgcd\(exgcd\)最经典的运用啊. 第三个任务,则是\(BSGS\)算法. 这样一来,这题就成了一道练模板的水题. 关于此题的数据 很…
题目大意:给定A,B,C,求最小的非负整数x,使A^x==B(%C) 传说中的EXBSGS算法0.0 卡了一天没看懂 最后硬扒各大神犇的代码才略微弄懂点0.0 參考资料: http://quartergeek.com/bsgs/ http://hi.baidu.com/aekdycoin/item/236937318413c680c2cf29d4 这两位写的比較具体0.0 能够用于參考 对拍时发现自己代码各种脑残0.0 伤不起啊 #include<cmath> #include<cstd…
简单数论 质因子分解 素性测试 素性测试指的是对一个正整数是否为质数的判定,一般来说,素性测试有两种算法: \(1.\) 试除法,直接尝试枚举因子,时间复杂度\(O(\sqrt n)\). \(2.\) \(Miller-Rabin\)算法,利用费马小定理和二次探测定理对素数进行测试,有小概率误判,时间复杂度\(O(log_2n)\). \(Code:\) inline bool judge(long long x,long long p) { if ( x % p == 0 || quickp…
前置知识 扩展欧几里得,快速幂 都是很基础的东西 扩展欧几里得 说实话这个东西我学了好几遍都没有懂,最近终于搞明白,可以考场现推了,故放到这里来加深印象 翡蜀定理 方程$ax+by=gcd(a,b)$一定有整数解 证明: 因为$gcd(a,b)=gcd(b,a$ $mod$ $b)$ 所以假设我们已经求出来了$bx+(a$ $mod$ $b)y=gcd(b,a$ $mod$ $b)$的一组整数解$(p,q)$ 因为$a$ $mod$ $b=a-(\lfloor \frac{a}{b} \rflo…
https://www.cnblogs.com/sdzwyq/p/9900650.html 模板: unordered_map<int, int> mp; LL q_pow(LL n, LL k, LL p) { LL ans = 1; if(k == -1) return 0; while(k) { if(k&1) ans = (ans*n) % p; n = (n*n) % p; k >>= 1; } return ans; } int BSGS(int a, int…
一.离散对数 给定 \(a,b,m\),存在一个 \(x\),使得 \(\displaystyle a^x\equiv b\pmod m\) 则称 \(x\) 为 \(b\) 在模 \(m\) 意义下以 \(a\) 为底的 离散对数. 二.BSGS 离散对数:求解关于 \(x\) 的方程 \(a^x\equiv b\pmod m\). 基本思想:(假设 \(\gcd(a,m)=1\),那么 \(a\) 在模 \(m\) 意义下存在逆元) 考虑类似分块的一个想法.首先设定一个常量 \(t\). 设…