离散对数的求解(bsgs)】的更多相关文章

bsgs算法 主要用来解决${A^x} = B(\bmod C)$(c是质数),都是整数,已知A.B.C求x. 例:poj 2417 Discrete Logging 具体步骤如下: 先把$x = i*m - j$,其中$m = ceil(\sqrt C )$,(ceil是向上取整). 这样原式就变为${A^{(i*m - j)}} = B(\bmod C)$, 再变为${A^j}*B = {A^{(m*i)}}(\bmod C)$. 枚举j(范围0-m),将${A^j}*B$存入hash表 枚…
一.离散对数 给定 \(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\). 设…
我诈尸啦! 高三退役选手好不容易抛弃天利和金考卷打场CF,结果打得和shi一样--还因为queue太长而unrated了!一个学期不敲代码实在是忘干净了-- 没分该没分,考题还是要订正的 =v= 欢迎阅读本题解! P.S. 这几个算法我是一个也想不起来了 TAT 题目链接 Codeforces 1106F Lunar New Year and a Recursive Sequence 新年和递推数列 题意描述 某数列\(\{f_i\}\)递推公式:\[f_i = (\prod_{j=1}^kf_…
11……1(n个)=99……9(n个)/9=(10n-1)/9. 那么显然就是求离散对数了,BSGS即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<map> using namespace std; #define ll long…
目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一篇关于BSGS的学习笔记.因为太过老旧,就想修改一些错误,顺便添上扩展BSGS的部分.可惜博客园不能对已发布的随笔修改编辑器,索性重新发出来.旧文已删. 定义 Baby-Step-Giant-Step算法,简称BSGS算法,又称大步小步算法,用于求方程\(a^x\equiv b(\text{mod…
1038 X^A Mod P 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 X^A mod P = B,其中P为质数.给出P和A B,求< P的所有X. 例如:P = 11,A = 3,B = 5. 3^3 Mod 11 = 5 所有数据中,解的数量不超过Sqrt(P).   Input 第1行:一个数T,表示后面用作输入测试的数的数量.(1 <= T <= 100) 第2 - T + 1行:每行3个数P A B,中间用空格隔开.(1 <= A, B <…
离散对数的求解 1.暴力 2.Baby-step giant-step 3.Pollard’s ρ algorithm …… 下面搬运一下Baby-step giant-step 的做法 这是在 https://ctf-wiki.github.io/ctf-wiki/crypto/asymmetric/discrete-log/discrete-log/上看到的,比较容易理解. 而且,里面的代码写得简洁明了. 写一下自己理解和自己照着写了一遍 原文代码: def bsgs(g, y, p): m…
话说好久没来博客上面写过东西了,之前集训过于辛苦了,但有很大的收获,我觉得有必要把它们拿出来总结分享.之前一直是个数论渣(小学初中没好好念过竞赛的缘故吧),经过一道题目对一些基础算法有了比较深刻的理解,在这里我打算系统地讲出这道题目涉及的大部分内容,希望可以帮到大家. 原题地址:http://acm.sgu.ru/problem.php?contest=0&problem=261 题目大意:给出质数$p$.$k$和一个自然数$a$,求关于$x$的同余方程$x^k \equiv a \pmod p…
写在前面: 学习笔记,方便复习,学习资料来自网络,注明出处 我们都在努力奔跑,我们都是追梦人 结论 In group theory, a branch of mathematics, the baby-step giant-step is a meet-in-the-middle algorithm for computing the discrete logarithm The algorithm is based on a space–time tradeoff. It is a fairl…
离散对数问题是求解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…