2023.1.16[模板]BSGS/exBSGS】的更多相关文章

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…
[模板]exBSGS/Spoj3105 Mod 题目描述 已知数\(a,p,b\),求满足\(a^x\equiv b \pmod p\)的最小自然数\(x\). 输入输出格式 输入格式: 每个测试文件中最多包含\(100\)组测试数据. 每组数据中,每行包含\(3\)个正整数\(a,p,b\). 当\(a=p=b=0\)时,表示测试数据读入完全. 输出格式: 对于每组数据,输出一行. 如果无解,输出No Solution(不含引号),否则输出最小自然数解. BSGS 若\(A \perp p\)…
大步小步走算法处理这样的问题: A^x = B (mod C) 求满足条件的最小的x(可能无解) 其中,A/B/C都可以是很大的数(long long以内) 先分类考虑一下: 当(A,C)==1 即A.C互质的时候, 叫他BSGS: A一定存在mod C意义下的逆元,所以,A^k也存在. 注意到,A^(fai(c)) = 1 (mod c)  ......................(fai(c)表示c的欧拉函数值) 所以,A^(fai(c)+1) = A (mod C) 就重新回去了. 所…
BSGS&ExBSGS 求解形如 \[a^x\equiv b\pmod p\] 的高次同余方程 BSGS 假装\(gcd(a,p)=1\). 设\(m=\lceil\sqrt p \rceil\) 然后把\(x\)分解成 \[x=i*m+j\] 的形式. \[a^x\equiv b\pmod p\] \[a^{i*m+j}\equiv b\pmod p\] \[a^{im}\equiv b/a^j\pmod p\] 这时我们发现,\(1≤j≤m-1\),也就是说枚举\(j\)是非常简单的. 这样…
BSGS和EXBSGS是OI中用于解决A^xΞB(mod C)的常用算法. 1.BSGS BSGS用于A,C互质的情况. 令m=sqrt(C),此时x可表示为i*m+j. 式中i和j都<=sqrt(C) 原式Ax≡B(mode C) -->Ai*m * Aj≡B(mode C) 枚举Ai*m,此时Ai*m相当于系数.//O(sqrt(C)) 现在我们可用exgcd/费马小定理求逆元算出Aj%C的值 通过预处理将A1~m存入map/哈希表.//O(1)//用map会多一个log 解决了. 时间复…
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里要…
如果a和p互质,用扩欧求逆元就可以直接套用普通BSGS.考虑怎么将其化至这种情况. 注意到当x>=logp时gcd(ax,p)是一个定值,因为这样的话每个存在于a中的质因子,其在ax中的出现次数一定比在p中的多. 于是对x<logp的情况暴力验证.对x>=logp的情况,设d=gcd(ax,p),剩下的问题变为求ax/d≡b/d(mod p/d),这里ax和p/d显然就是互质的了. 要求解这个方程,显然不能把d直接乘过去(好像也说不清为啥).首先b%d>0时无解.然后考虑从ax中分…
exBSGS 已知数\(a,p,b\),求满足\(a^x≡b\ (\bmod p)\)的最小自然数\(x\). \(100\%\)的数据,\(a,p,b≤10^9\). _皎月半洒花的题解 其实本质上,当\(p\)不为素数时,我们无法进行朴素 BSGS 的原因是我们的欧拉定理\(a^{\varphi(p)} \equiv b(\bmod p)\) 只能处理\((a,p)=1\)的情况.那么我们知道,朴素的 BSGS 的关键在于,可以保证最小解是有界的--\(x\)一定在\([1,\varphi(…
传送门 首先要懂得 $BSGS$,$BSGS$ 可以求出关于 $Y$ 的方程 $X^Y \equiv Z (mod\ mo)$ 的最小解,其中 $gcd(X,Z)=1$ $exBSGS$ 算是 $BSGS$ 的进一步扩展,使得当 $gcd(X,Z)!=1$ 时仍然适用 先把方程转换成 $X^Y+k*mo=Z$ 的形式 因为 $Y,k$ 都是整数,所以 $Z$ 必须是 $gcd(X,mo)$ 的倍数,不然无解 所以可以把方程左右同除 $gcd(X,mo)$,变成 $X^{(Y-1)}*\frac{…
基础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\),有…