[luogu4195 Spoj3105] Mod (大步小步)】的更多相关文章

传送门 题目描述 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. 输入输出格式 输入格式: 每个测试文件中最多包含100组测试数据. 每组数据中,每行包含3个正整数a,p,b. 当a=p=b=0时,表示测试数据读入完全. 输出格式: 对于每组数据,输出一行. 如果无解,输出"No Solution"(不含引号),否则输出最小自然数解. 输入输出样例 输入样例#1: 5 58 33 2 4 3 0 0 0 输出样例#1: 9 No Solution 说明 100%的数据…
我先转为敬? orz% miskcoo 贴板子 BZOJ 3239: Discrete Logging//2480: Spoj3105 Mod(两道题输入不同,我这里只贴了3239的代码) CODE #include<bits/stdc++.h> using namespace std; typedef long long LL; int p, a, b; int gcd(int a, int b) { return b ? gcd(b, a%b) : a; } inline int qpow…
大步小步走算法处理这样的问题: 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 algorithm ax≡b(mod n) 大步小步算法,这个算法有一定的局限性,只有当gcd(a,m)=1时才可以用 原理 此处讨论n为素数的时候. ax≡b(mod n)(n为素数) 由费马小定理可知,只需要验证0,1,2...n-1是不是解即可,因为an-1 = 1mod(n) 算法过程 1.首先求出a0,a1,a2,...,am-1 模上n的值是否为b,存储在e[i]中,求出am的逆a-m 2.下面考虑am,am+1,...,a2m-1 模上n的值是否为b 此时不用一一检查,如…
大步小步模板 (hash稍微有一点麻烦, poj不支持C++11略坑) #include <iostream> #include <vector> #include <cstring> #include <cstdio> #include <cmath> #include <map> #define pb push_back #define fi first #define se second #define mk make_pair…
大步小步算法用于解决:已知A, B, C,求X使得 A^x = B (mod C) 成立. 我们令x = im - j | m = ceil(sqrt(C)), i = [1, m], j = [0, m] 那么原式就变成了: A^(im) = A^j * B 我们先枚举j,把A^j * B加入哈希表 然后枚举i,在表中查照A^(i*m),如果找到了,那么就找到了一个解. 算法的复杂度为O(n^0.5) 代码: #include <bits/stdc++.h> #define ll long…
离散对数及其拓展 离散对数是在群Zp∗Z_{p}^{*}Zp∗​而言的,其中ppp是素数.即在在群Zp∗Z_{p}^{*}Zp∗​内,aaa是生成元,求关于xxx的方程ax=ba^x=bax=b的解,并将解记作x=logabx=log_{a}{b}x=loga​b,离散对数指的就是这个logablog_{a}{b}loga​b.由于群Zp∗Z_{p}^{*}Zp∗​的阶是p−1p-1p−1,且是循环群,因为生成元的阶是p−1p-1p−1,因而模p−1p-1p−1相等的指数可以看做一样的数,x=l…
[模板]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\)…
2480: Spoj3105 Mod Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 557  Solved: 210[Submit][Status][Discuss] Description 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. Input     每个测试文件中最多包含100组测试数据.     每组数据中,每行包含3个正整数a,p,b.     当a=p=b=0时,表示测试数据读入完全. Output     对于…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4128 大水题一道 使用大步小步算法,把数字的运算换成矩阵的运算就好了 矩阵求逆?这么基础的线代算法我也不想多说,还是自行百度吧 需要注意的是矩阵没有交换律,所以在计算$B\cdot A^{-m}$的时候不要把顺序搞混 代码: #include <cstring> #include <cstdio> #include <algorithm> #include <…
[BZOJ1467/2480]Pku3243 clever Y/Spoj3105 Mod Description 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. Input     每个测试文件中最多包含100组测试数据.     每组数据中,每行包含3个正整数a,p,b.     当a=p=b=0时,表示测试数据读入完全. Output     对于每组数据,输出一行.     如果无解,输出“No Solution”(不含引号),否则输出最小自然数解. Sample Inp…
本文原载于:http://www.orchidany.cf/2019/02/06/BSGS-junior/#more \(\rm{0x01}\) \(\mathcal{Preface}\) \(\rm{BSGS}(Baby~Step~Giant~Step)\), 大步小步法.当然也会被叫做拔山盖世.北上广深算法--咳,这并不重要.形式化地讲, \(\rm{BSGS}\)算法主要用来解决以下问题 : 给定质数\(p\), 整数\(a, b\), \((a, p)=1\).求最小的非负整数\(x\)…
乍一看题面:$$a^x \equiv b \ (mod \ m)$$ 是一道BSGS,但是很可惜$m$不是质数,而且$(m, a) \not= 1$,这个叫扩展BSGS[额...... 于是我们需要通过变换使得$(m, a) = 1$ 首先令$g = (a, m)$,则原式等价于:$$a ^ x + k * m = b, k \in \mathbb{Z}$$ 移项可得:$$\frac{a} {g} * a ^ {x - 1} + k * \frac {m} {g} = \frac {b} {g}…
LRJ白书上的题 #include <stdio.h> #include <iostream> #include <vector> #include <math.h> #include <set> #include <map> #include <queue> #include <algorithm> #include <string.h> #include <string> using…
计算\(y^x ≡ z \ mod\ p\) 中 \(x\) 的解. 这个模板是最小化了\(x\) , 无解输出\(No \ Solution!\) map<ll,ll>data; ll m,res,t,ans; bool flag; Pow(int x,int y,int p){return (x^y)%p;} IL void BSGS(RG ll y , RG ll z,RG ll p){ y %=p; flag = false; if(!y && !z){puts(&qu…
原文链接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被用于求解离散对数,即同余方程: \[ 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)\)的算法…
https://www.luogu.org/problemnew/show/P4861 把好像把一开始b==1的特判去掉就可以AC了. #include<bits/stdc++.h> using namespace std; typedef long long ll; inline int gcd(int a,int b){ if(!b) return a; else{ while(int i=a%b){ a=b; b=i; } return b; } } inline int qpow(ll…
都是BSGS的板子题 此时 \( 0 \leq x \leq p-1 \) 设 \( m=\left \lceil \sqrt{p} \right \rceil ,x=i*m-j \)这里-的作用是避免逆元 于是可以把式子变形成这样:\( a^{im}\equiv ba^j(mod p) \) 枚举右边\( 0 \leq j <m \) ,用map或者hash以模数为下标来存每一个j 枚举左边\( 0 \leq i <m \) ,在map或者hash中查找对应的模数 #include<i…
知识概述 好吧,我承认这是我初三寒假就听过的知识,然而我现在早就高一了(又是寒假,只不过我已经在省选了...) 额,这是求离散模对数的一种算法 也就是求满足方程a^x≡b(mod p)的最小的x(其中p为质数) 考虑将x分块?,根据欧拉定理,只需检查x=0,1,2...p-1是否是解即可,因为a^(p-1)≡1(mod p)当x超过p-1时就开始循环了哦 假设块的大小为m 先检查前m项,a^0,a^1,a^2...a^(m-1)是否满足要求,把ai mod p存在hash表ei里,求出a^m的逆…
用途: 一般用来求\(a^x\equiv b\,\,(mod\,p)\)的最小正整数解,其中gcd(a,p)=1 设\(u=\lceil sqrt(p)\rceil\),则式子可以转化为\(a^{iu-j}\equiv b\,\,(mod\,p)\),其中\(i\in[1,u],j\in[0,u)\) 于是\(a^{iu}\equiv a^jb\,\,(mod\,p)\),我们就可以枚举j,存到map中,再枚举i判重就行了 不过当存在不同的j使\(a^jb\,mod\,p\)相同时,我们记录较大…
#include<cstdio> #include<algorithm> #include<cmath> #include<map> using namespace std; typedef long long ll; ll p,a,b; ll ksm(ll x,ll y) { ll res=1; while(y) { if(y&1)res=res*x%p; y>>=1; x=x*x%p; } return res; } map<l…
传送门 首先要懂得 $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 当h是质数的时候使用 extbsgs 不满足上面那种情况的时候 具体参见http://tonyfang.is-programmer.com/posts/178997.html ll gcd(ll a,ll b) { return b?gcd(b,a%b):a; } ll bsgs(ll A,ll B,ll C) { ll m,v,e=,i; m=ceil(sqrt(C)); map<ll,ll> hash; hash[]=m; ;i<m;++i) { e=…
传送门 关于exbsgs是个什么东东可以去看看yyb大佬的博客->这里 //minamoto #include<iostream> #include<cstdio> #include<cmath> #include<map> #define ll long long #define GG {puts("No Solution");} using namespace std; #define getc() (p1==p2&&a…
题面 bsgs问题.因为p可能不为质数,所以我们将原先解题的式子变形 每次除以p与a的最大公约数,直到最大公约数为1或b不能整除为止 代码 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cmath> #include<map> #define LL long long using namespace std; LL…
Description Given a prime P, 2 <= P < 231, an integer B, 2 <= B < P, and an integer N, 1 <= N < P, compute the discrete logarithm of N, base B, modulo P. That is, find an integer L such that B L  == N (mod P) Input Read several lines of…
题目描述 X^A mod P = B,其中P为质数.给出P和A B,求< P的所有X. 例如:P = 11,A = 3,B = 5. 3^3 Mod 11 = 5 所有数据中,解的数量不超过Sqrt(P). 分析 这道题包括几个知识点 离散对数(大步小步BSGS算法) 求关于x的同余方程\(y^x \equiv n \pmod{P}(P为质数)\)的解, 设\(m=\lceil \sqrt{n} \rceil,x=bm+r\),我们预处理出\(y^i(i\in[0,P-1])\),用map或ha…
扩展BSGS Orz zyf……然而他的题解对AC大神的题解作了引用……而坑爹的百度云……呵呵了... 扩展BSGS模板题 /************************************************************** Problem: 2480 User: Tunix Language: C++ Result: Accepted Time:6948 ms Memory:2212 kb ***************************************…
目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一篇关于BSGS的学习笔记.因为太过老旧,就想修改一些错误,顺便添上扩展BSGS的部分.可惜博客园不能对已发布的随笔修改编辑器,索性重新发出来.旧文已删. 定义 Baby-Step-Giant-Step算法,简称BSGS算法,又称大步小步算法,用于求方程\(a^x\equiv b(\text{mod…