BSGS求解离散对数问题】的更多相关文章

扩展BSGS用于求解axΞb mod(n) 同余方程中gcd(a,n)≠1的情况 基本思路,将原方程转化为a与n互质的情况后再套用普通的BSGS求解即可 const int maxint=((1<<30)-1)*2+1; struct Hashmap{     static const int Ha=999917,maxe=46340;     int E,lnk[Ha],son[maxe+5],nxt[maxe+5],w[maxe+5];     int top,stk[maxe+5];  …
离散对数问题是求解axΞb mod(n) 同余方程 以下模板使用于gcd(a,n)=1的情况 ; int hs[mod],head[mod],Next[mod],id[mod],top; void insert(int x,int y){ int k=x%mod; hs[top]=x,id[top]=y,Next[top]=head[k],head[k]=top++; } int find(int x){ int k=x%mod; ;i=Next[i]) if(hs[i]==x) return…
问题 BSGS被用于求解离散对数,即同余方程: \[ A^x\equiv B\pmod{P} \] 求\(x\)的最小非负整数解. 保证\(A\perp P\)(互质). 分析 首先,我们根据费马小定理,有 \[ A^{P-1}\equiv 1\pmod{P} \] 则显然有 \[ A^{x-k(P-1)}\equiv A^x\pmod{P} \] 即 \[ A^{x\mod{P-1}}\equiv A^x\pmod{P} \] 那么显然\(x<P-1\),我们就得到了一个\(O(P)\)的算法…
基础BSGS 用处是什么呢w 大步小步发(Baby-Step-Giant-Step,简称BSGS),可以用来高效求解形如\(A^x≡B(mod C)\)(C为素数)的同余方程. 常用于求解离散对数问题.形式化地说,该算法可以在\(O(\sqrt{n})\)用于求解. 接下来是算法过程 首先我们讨论的都是(A,C) = 1(由于C是素数,所以等价于A不是C倍数)的情况,如果(A,C) > 1(A是C倍数),很容易特判掉. 先引入一个结论: 如果(A,C) = 1,那么对于\(x \in N\),有…
题意:给你一个分数,求它在二进制下的循环节的长度,还有第一个循环节从哪一位开始. For example, x = 1/10 = 0.0001100110011(00110011)w and 0001100110011 is a preperiod and 00110011 is a period of 1/10. 思路一: 我们可以观察一下1/10这组数据,按照二进制转换法(乘二法),我们可以得到: 1/10 2/10 4/10 8/10 16/10 32/10 ... 然后都分子都尽可能减去…
BSGS算法 我是看着\(ppl\)的博客学的,您可以先访问\(ppl\)的博客 Part1 BSGS算法 求解关于\(x\)的方程 \[y^x=z(mod\ p)\] 其中\((y,p)=1\) 做法并不难,我们把\(x\)写成一个\(am-b\)的形式 那么,原式变成了 \(y^{am}=zy^b(mod\ p)\) 我们求出所有\(b\)可能的取值(0~m-1),并且计算右边的值 同时用哈希或者\(map\)之类的东西存起来,方便查询 对于左边,我们可以枚举所有可能的\(a\),然后直接查…
BSGS算法 \(Baby Step Giant Step\)算法,即大步小步算法,缩写为\(BSGS\) 拔山盖世算法 它是用来解决这样一类问题 \(y^x = z (mod\ p)\),给定\(y,z,p>=1\)求解\(x\) 普通的\(BSGS\)只能用来解决\(gcd(y,p)=1\)的情况 设\(x=a*m+b, m=\lceil \sqrt p \rceil, a\in[0,m), b\in[0,m)\) 那么\(y^{a*m}=z*y^{-b} (mod\ p)\) 怎么求解,为…
从这里开始 离散对数和BSGS算法 扩展BSGS算法 离散对数和BSGS算法 设$x$是最小的非负整数使得$a^{x}\equiv b\ \ \ \pmod{m}$,则$x$是$b$以$a$为底的离散对数,记为$x = ind_{a}b$. 假如给定$a, b, m$,考虑如何求$x$,或者输出无解,先考虑$(a, m) = 1$的情况. 定理1(欧拉定理) 若$(a, m) = 1$,则$a^{\varphi(m)}\equiv 1 \pmod{m}$. 证明这里就不给出,因为在百度上随便搜一…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2242 [题目大意] 给出T和K 对于K=1,计算 Y^Z Mod P 的值 对于K=2,计算满足 xy≡ Z ( mod P ) 的最小非负整数 对于K=3,计算满足 Y^x ≡ Z ( mod P) 的最小非负整数 [题解] K=1情况快速幂即可 K=2情况用exgcd求解 K=3用BSGS求解 [代码] #include <cstdio> #include <cmath&…
无聊的计算姬 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output Sample Input 6 2 2 3 4 3 2 7 9 2 1 2 9 3 1 6 7 1 5 3 7 1 9 2 8 Sample Output Math Error 3 Math Error 6 6 1 HINT Solution 我们可以分步骗分.(Task1直接快速幂即可.) 对于前50分: 对于Task2,我们直接暴力枚举,出现一个重复…