BSGS与扩展BSGS】的更多相关文章

BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\((A,P)=1\),即\(A\)与\(P\)互质 前置知识 根据欧拉定理\(A^{ \varphi(p)} \equiv1(mod\ p)\),所以\(A^x(mod\ p)\)的循环节为\(\varphi(p)\).也就是说如果上面的方程有解\(x\),那么肯定有\(x \in [0,\varphi…
BSGS: 求合法的\(x\)使得\(a ^ x \quad mod \quad p = b\) 先暴力预处理出\(a^0,a^1,a^2.....a^{\sqrt{p}}\) 然后把这些都存在map里 : \(map[a^x] = x\) 一个合法的x满足\(x = k\sqrt{p} + l\)使得\(a^x = b\),因此可以直接枚举k,于是有: \[a^x = a^{k\sqrt{p}} \cdot a^l = b\] \[a^l = \frac{b}{a^{k\sqrt{p}}} =…
蒟蒻哪里有什么总结,只能点击%YL% 还有这位ZigZagK大佬的blog \(\mbox{BSGS}\) 模板题:洛谷P3846 [TJOI2007]可爱的质数 给定\(a,b\)和模数\(\mbox{YL}\),求\(a^x\equiv b(\bmod\mbox{YL})\)中\(x\)的最小非负整数解.保证\(\gcd(a,\mbox{YL})=1\). 设\(k=\lceil\sqrt{\mbox{YL}}\rceil\),令\(x=ky-c\)(\(y\in[1,k],c\in[0,k…
\(BSGS(baby-step-giant-step)\)算法是用来解高次同余方程的最小非负整数解的算法,即形如这个的方程: \(a^x\equiv b(mod\ p)\) 其中\(p\)为质数(其实只要(\((a,p)=1\)即可) 首先考虑暴力怎么解:由费马小定理可知\(a^{p-1}\equiv 1(mod\ p)\),也就是说如果在\([0,p-1]\)内无解的话,方程就是无解的.所以我们从小到大枚举\([0,p-1]\)中的每一个数,满足方程就结束.但是这里\(p-1\)并不一定是最…
BSGS 给定\(a,b,p\),求\(x\)使得\(a^x\equiv b \pmod p\),或者说明不存在\(x\) 只能求\(\gcd(a,p)=1\)的情况 有一个结论:如果有解则必然存在\(x\in\left\{0\ldots p-1\right\}\)的解 设\(q=\lceil\sqrt p\rceil,x=cq-d\) \[a^{cq-d}\equiv b\pmod p\] \[a^{cq}\equiv b\times a^d\pmod p\] 先枚举\(d\in\left\{…
http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details/73162229 在大约sqrt( p )的复杂度求出 ( a^x ) % p = b % p中的x 扩展bsgs增加了对p不是素数的情况的处理. 扩展bsgs在处理过a,b,p之后进行bsgs的时候x处理不到num以下的部分,这部分在处理a,b,p的时候处理过了(b=1输出num)所以不用考虑.…
T2  扩展BSGS T3 快速阶乘 给定整数n,质数p和正整数c,求整数s和b,满足n! / pb = s mod pc 考虑每次取出floor(n/p)个p因子,然后将问题转化为子问题. /************************************************************** Problem: 3283 User: idy002 Language: C++ Result: Accepted Time:1704 ms Memory:12380 kb ***…
扩展BSGS的板子 对于gcd(a,p)>1的情况 即扩展BSGS 把式子变成等式的形式: \( a^x+yp=b \) 设 \( g=gcd(a,p) \) 那么两边同时除以g就会变成: \( \frac{a}{g} a^{x-1}+y\frac{p}{g}=\frac{b}{g} \) 如此循环到ap互质,然后正常BSGS求即可 最后答案加上循环次数,即当前的x是经过几次减一得到的 注意有很多关于0和1的特判 以及这道题在bzoj上是可以用map的,但是poj上只能用hash map版: #…
扩展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];  …
目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一篇关于BSGS的学习笔记.因为太过老旧,就想修改一些错误,顺便添上扩展BSGS的部分.可惜博客园不能对已发布的随笔修改编辑器,索性重新发出来.旧文已删. 定义 Baby-Step-Giant-Step算法,简称BSGS算法,又称大步小步算法,用于求方程\(a^x\equiv b(\text{mod…
题意 给定 $a,b$ 和模数 $p$,求整数 $x$ 满足 $a^x \equiv  b(mod \ p)$,不保证 $a,p$ 互质. (好像是权限题,可见洛谷P4195 分析 之前讲过,可以通过设置 $x = km - r$ 而非 $x = km + r$ 避免求逆元,但是需要逆元存在,$a, p$ 互质的条件保证了这一点. 如果 $a, p$ 不互质怎么办呢? 我们想办法让他们变得互质. 具体地,设 $d_1 = gcd(a, p)$,如果 $d_1 \nmid b$,则原方程无解.否则…
1467: Pku3243 clever Y Time Limit: 4 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description 小Y发现,数学中有一个很有趣的式子: X^Y mod Z = K 给出X.Y.Z,我们都知道如何很快的计算K.但是如果给出X.Z.K,你是否知道如何快速的计算Y呢? Input 本题由多组数据(不超过20组),每组测试数据包含一行三个整数X.Z.K(0 <= X, Z, K <= 109). 输入文…
每次把gcd(a,c)提到前面,直到a,c互质,然后就是普通BSGS了 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #define LL long long using namespace std; struct hashtable{ static const int N=577399; int tot,hash…
求解A^x ≡ B mod P (P不一定是质数)的最小非负正整数解 先放几个同余定理: 一.判断如果B==1,那么x=0,算法结束 二.若gcd(A,P)不能整除 B,则 无解,算法结束 三.若gcd(A,P)!=1,令d=gcd(A,P),若d不能整除B,则无解,算法结束. 有 四.持续步骤三,直至 gcd(A,)=1 有  五.枚举 0<x<k,若有解,输出x,算法结束 六.对于x>=k, A=,B=,P= A,P 互素 , 直接用BSGS 求    * A ^ x ≡ B mod…
Clever Y Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 8666   Accepted: 2155 Description Little Y finds there is a very interesting formula in mathematics: XY mod Z = K Given X, Y, Z, we all know how to figure out K fast. However, give…
哎呀大水题..我写了一个多小时..好没救啊.. 数论板子X合一? 注意: 本文中变量名称区分大小写. 题意: 给一个\(n\)阶递推序列\(f_k=\prod^{n}_{i=1} f_{k-i}b_i\mod P\)其中\(P=998244353\), 输入\(b_1,b_2,...,b_n\)以及已知\(f_1,f_2,...,f_{n-1}=1\), 再给定一个数\(m\)和第\(m\)项的值\(f_m\), 求出一个合法的\(f_n\)值使得按照这个值递推出来的序列满足第\(m\)项的值为…
题目链接 直接用模板好了.实在不行,反正有队友啊~~~~ #include<bits/stdc++.h> using namespace std; typedef long long LL; map<LL,LL>mp; LL qpow(LL x,LL n,LL mod) //求x^n%mod { LL ret=; ) { ) ret=ret*x%mod; x=x*x%mod; } return ret; } LL gcd(LL a, LL b) { return b? gcd(b,…
BSGS BSGS,全称叫 BabyStepGiantStep,也就是大步小步 其实还是比较暴力的 它可以\(O(\sqrt p)\)的复杂度内解出: \[a^x\equiv n\pmod p,\gcd(a,p)=1 \] 中\(x\)的值 如果\(\gcd(a,p)\neq 1\)就要用到 exBSGS 了 我们考虑令\(x=im-k,0\le k<m\) 那么原式变为 \[a^{im-k}\equiv n\pmod p \] \[a^{im}\equiv na^k\pmod p \] 那么,…
\(BSGS\) 求解\(a^x\equiv b\pmod p\),且\(a\)与\(p\)互质 由\(a^{φ(p)}\equiv1 \pmod p\)和\(a^0\equiv 1\pmod p\)得 \(0\simφ(p)\)为一个循环节,所以若在这个范围内不存在\(x\)满足方程,方程就无解 考虑分块,设\(x=im-k\),其中\(0\leqslant k\leqslant m\) 原方程变为\(a^{im-k}\equiv b\pmod p\) 两边同乘\(a^k\),\(a^{im}…
简介 前置知识: 快速幂&&O(1)快速乘 [模板] 数学基础:快速幂/乘/逆元/exGCD/(ex)CRT/(ex)Lucas定理…
原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2480.html 题目传送门 - BZOJ2480 题意 已知数 $a,p,b$ ,求满足 $a^x≡b \pmod p $ 的最小自然数 $x$ . $a,p,b\leq 10^9$ 题解 ExBSGS模板题. UPD(2018-09-10): 详见数论总结. 传送门 - https://www.cnblogs.com/zhouzhendong/p/Number-theory-Residue-Sys…
从这里开始 离散对数和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://poj.org/problem?id=2417 题目: 题意: 求一个最小的x满足a^x==b(mod p),p为质数. 思路: BSGS板子题,推荐一篇好的BSGS和扩展BSGS的讲解博客:http://blog.miskcoo.com/2015/05/discrete-logarithm-problem 代码实现如下: #include <set> #include <map> #include <queue> #include <st…
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其实是一样的……因为模数虽然是质数,但是其可能可以整除a!!所以这两者其实是一样的…… 第一二种操作不赘述. #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; typedef long long ll; ll Quick_Pow(ll a,ll p,ll MOD){ if(!p){…
DP P2723 丑数 Humble Numbers(完成时间:2019.3.1) P2725 邮票 Stamps(完成时间:2019.3.1) P1021 邮票面值设计(完成时间:2019.3.1) P1070 道路游戏(完成时间:2019.3.2) P2558 [AHOI2002]网络传输(完成时间:2019.3.2) blog2(完成时间:2019.3.2) P2831 愤怒的小鸟(完成时间:2019.3.2) P3160 [CQOI2012]局部极小值(完成时间:2019.3.3) P1…
kuangbin的BSGS: c为素数: #define MOD 76543 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] =…
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Robin+Pollard_Rho) 本文概要 1. 基础回顾 2. 中国剩余定理 (CRT) 及其扩展 3. 卢卡斯定理 (lucas) 及其扩展 4. 大步小步算法 (BSGS) 及其扩展 5. 原根与指标入…
BSGS算法总结 \(BSGS\)算法(Baby Step Giant Step),即大步小步算法,用于解决这样一个问题: 求\(y^x\equiv z\ (mod\ p)\)的最小正整数解. 前提条件是\((y,p)=1\). 我们选定一个大步长\(m=\sqrt p + 1\),设\(x=am+b\),那么显然有\(a,b\in[0,m)\).这样就有\(y^{am+b}\equiv z\ (mod\ p)\),就有\((y^m)^a=z*y^{-b}\ (mod\ p)\). 但是这个逆元…
BSGS (感觉这东西还是要写一下) BSGS主要用于求解形如\(x^k=y\pmod p\)(注意这里p与x互质)这样的方程的最小正整数解的问题 设\(m=\lceil\sqrt p\rceil,k=am-b,a\in[1,m],b\in[0,m)\) 那么上面的方程可以变形成\(x^{am}=yx^b\pmod p\) 枚举\(b\),计算出右边的值存到\(map\)中,枚举\(a\)查表即可 Q:可以枚举左边存表,右边查嘛? A:可以,但是左边查到表可以直接输出... 顺便一说,map里要…