BSGS&ExBSGS】的更多相关文章

大步小步走算法处理这样的问题: 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 (感觉这东西还是要写一下) 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里要…
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…
基础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\),有…
a^x=b(mod p)求x,利用分块的思想根号p的复杂度求答案,枚举同余式两端的变量,用hash的方法去找最小的答案(PS:hash看上去很像链式前向星就很有好感).然后如果p不是质数时,就利用同余式的性质,把(a,p)的最大公约数除掉,然后把残缺的部分用一个d存一下,就可以转化为普通的BSGS了.这里那个在while中的特判b==d要不要我也不确定,加了肯定对.当然一个明确的特判是b==1时这时直接返回答案为0就OK. #include<iostream> #include<cstd…
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔兰数 常用数学公式 技巧经验 容斥 组合计数 区间筛 博弈 有趣的式子 gcd有关 数论模板库 黑科技 \(long\ long\)相乘取模 子集枚举 高维前缀和 各种线性筛 高级算法 Exgcd Lucas EXCRT BSGS 高斯消元 线性基 裴蜀定理 FFT 拉格朗日插值 NTT FWT 数论 Tag…
目录 快速幂 扩展欧几里得 GCD 扩展欧几里得 同余系列 同余方程 同余方程组 一点想法 高次同余方程 BSGS exBSGS 线性筛素数 埃式筛 欧拉筛 欧拉函数 讲解 两道水题 法雷级数 可见点数 原根 欧拉定理 原根部分性质证明(数量证不出来,一个还没填的坑) 扩展:原根的求法 代码 高斯消元 普通 辗转相除法 矩阵树与证明 未了结的坑 无向图 关联矩阵 Kirchhoff矩阵 行列式 求法 代码 证明 柯西-比内公式 小结 @ 快速幂 题目描述 [题意] 求a^b mod c,a,b,…
搬运自本人的AcWing,所以那里的文章会挺多. 友链(同类文章) :bztMinamoto 世外明月 mlystdcall 新人手册:AcWing入门使用指南 前言 有看到好文欢迎推荐(毛遂自荐也可以的2333).查找的话请自行 F3,菜鸡作者不会搞目录链接. 置顶(常用网站) 查询 OI Wiki OEIS cpp reference 中文站 c++官网 工具 剪贴板 图床(imgbb) 图床(路过) Vjudge 镜像站 udebug Tool Dictionary-Merriam Web…
ZROI 游记 在自闭中度过了17天 挖了无数坑,填了一点坑 所以还是有好多坑啊zblzbl 挖坑总集: 时间分治 差分约束 Prufer序列 容斥 树上数据结构 例题C (和后面的例题) 点分 最大流.费用流.上下界 Hero meet devil(dp套dp) Pollards' Rho CRT & exCRT BSGS & exBSGS NTT & FFT 以及 分治NTT & FFT (& 原根) Cipolla 算法(二次剩余) Min25 ZROI D1…
TOC 建议使用 Ctrl+F 搜索 . 目录 小工具 / C++ Tricks NOI Linux 1.0 快速读入 / 快速输出 简易小工具 无序映射器 简易调试器 文件 IO 位运算 Smart Double 数论 GCD 快速幂相关 分数模板类 EI 的取模还原分数 逆元 整除分块 线性筛 扩展欧几里得算法 (exgcd) 类欧几里得算法 中国剩余定理 (CRT) & exCRT BSGS & exBSGS 积性函数筛子 组合计数 组合数取模 伯努利数 斯特林数 Catalan 数…
\(BSGS\)用于解决这样一类问题: 求解\(A^x ≡B(modP)\)的最小\(x\),其中\(P\)为质数. 这里我们采用分块的方法,把\(x\)分解为\(i *t-b\)(其中\(t\)是分块大小) .根据模意义下逆元的性质,\(x\)的大小一定\(<=phi(p)\)即\(p - 1\),所以经过移项和进行存在性对比,我们就可以\(O(N)\)求出答案. int BSGS (int A, int B, int P) { int t = (int) ceil (sqrt (P)); f…
\(\rm{0x01\quad Preface}\) \(emmm\)严格来讲,不应该被算到一个模板里面.因为在我看来模板是人构造出来的,但是这个算法应该是一个解决问题的\(process\)-更像是在解一道数学题,如果\(BSGS\)是定理的话,\(exBSGS\)更像是一个不断转化的过程233(手动@lxa并且溜 \(\rm{0x02\quad Algorithm~Process}\) 今天才发现原来\(\rm{BSGS}\)有两种写法--并且觉得剩下的题解讲的都讲的不是很全的样子233.…
前置知识 扩展欧几里得,快速幂 都是很基础的东西 扩展欧几里得 说实话这个东西我学了好几遍都没有懂,最近终于搞明白,可以考场现推了,故放到这里来加深印象 翡蜀定理 方程$ax+by=gcd(a,b)$一定有整数解 证明: 因为$gcd(a,b)=gcd(b,a$ $mod$ $b)$ 所以假设我们已经求出来了$bx+(a$ $mod$ $b)y=gcd(b,a$ $mod$ $b)$的一组整数解$(p,q)$ 因为$a$ $mod$ $b=a-(\lfloor \frac{a}{b} \rflo…
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 解决了. 时间复…
也许更好的阅读体验 \(Description\) 给定\(a,b,p\),求一个\(x\)使其满足\(a^x\equiv b\ \left(mod\ p\right)\) \(BSGS\) \(BSGS\)可以解决\(p\)为质数的情况 令 \(m=\lceil \sqrt p\rceil\) 令 \(x=i\cdot m-k\) 有 \(a^{i\cdot m-k} \equiv b\ (mod\ p)\) 两边同乘 \(a^k\) 得 \(a^{i\cdot m}\equiv b\cdot…
一.离散对数 给定 \(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\). 设…
BSGS 引入 求解关于\(X\)的方程, \[A^X\equiv B \pmod P \] 其中\(Gcd(A,P)=1\) 求解 我们令\(X=i*\sqrt{P}-j\),其中\(0<=i,j<=\sqrt{P}\) 则原式可以变为: \[A^X\equiv B \pmod P \] \[A^{i*\sqrt{P}-j}\equiv B \pmod P \] 由于\(Gcd(A,P)=1\),则可以恒等变化为: \[A^{i*\sqrt{P}}\equiv B*A^j \pmod P \…
知识点简单总结--BSGS与EXBSGS BSGS 给出 $ A,B,C,(A,C)=1 $ ,要你求最小的 $ x $ ,使得 $ A^x \equiv B(mod \ C) $ . 在数论题中经常会看见这样的式子,而它的用处确实也不少,例如: 求指标 ...想不到了(被打) 解题思路 众所周知 $ A^{x} \equiv A^{x \ mod \ \phi (C) }(mod \ C) $ 所以考虑暴力枚举就可以. 但是我们显然要考虑一个更快的. 分块就好了. 设块大小 $ m $ ,预处…
我的 BSGS 和各位犇犇的差不多,但是不需要求逆元 Luogu [ TJOI2007 ] 可爱的质数 原题展现 题目描述 给定一个质数 \(p\),以及一个整数 \(b\),一个整数 \(n\),现在要求你计算一个最小的非负整数 \(l\),满足 \(b^l \equiv n \pmod p\). 输入格式 仅一行,有 \(3\) 个整数,依次代表 \(p, b, n\). 输出格式 仅一行,如果有 \(l\) 满足该要求,输出最小的 \(l\),否则输出 no solution. 样例 #1…
题意:给你一个分数,求它在二进制下的循环节的长度,还有第一个循环节从哪一位开始. 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 ... 然后都分子都尽可能减去…
1:快速幂  2:exgcd  3:exbsgs,题里说是素数,但我打的普通bsgs就wa,exbsgs就A了...... (map就是慢)..... #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<map> #define LL long long using namespace st…
每次把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…
https://codeforces.com/contest/1106/problem/F 题意 数列公式为\(f_i=(f^{b_1}_{i-1}*f^{b_2}_{i-2}*...*f^{b_k}_{i-k})\)mod\(P\),给出\(f_{1}...f_{k-1}\)和\(f_{n}\),求\(f_{k}\),其中\(P\)等于998244353 题解 3是998244353的离散对数,所以\(f^{b_1}_{i-1} \equiv 3^{h_i*b_1}(modP)\),怎么求离散…
题目描述 已知数a,p,b,求满足a^x≡b(mod p)的最小自然数x. 输入     每个测试文件中最多包含100组测试数据.     每组数据中,每行包含3个正整数a,p,b.     当a=p=b=0时,表示测试数据读入完全. 输出     对于每组数据,输出一行.     如果无解,输出“No Solution”(不含引号),否则输出最小自然数解. 样例输入 5 58 33 2 4 3 0 0 0 样例输出 9 No Solution 提示 100%的数据,a,p,b≤1e9. $EX…
注:转载本文须标明出处. 原文链接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. 原根与指标入…
如果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中分…
bsgs算法: 我们在逆元里曾经讲到过如何用殴几里得求一个同余方程的整数解.而\(bsgs\)就是用来求一个指数同余方程的最小整数解的:也就是对于\(a^x\equiv b \mod p\) 我们可以用\(bsgs\)在\(O(\sqrt n)\) 的复杂度内求出关于\(x\)的最小正整数解.(前提是\(p\)为质数) \(a^x\equiv b \mod p\) 我们可以知道如果我们的模数p是一个质数,我们将同余式的右边以逆元的形式乘到左边来,根据殴拉定理(因为p是质数,所以a,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}$. 证明这里就不给出,因为在百度上随便搜一…
目录 bsgs问题 或 poj2417: 概述 代码 exbsgs 鸣谢 \(gzy gzy gzy\) bsgs问题 或 poj2417: 给定质数\(p\),给定\(a\),\(b\),\((a,p)=1\) 求出最小的整数x,使得\(a^{x}≡b(mod p)\) 概述 由费马小定理可以知道 \(a^{x+p-1}≡a^{x}≡b(mod p)\) 所以如果有解那\([0,p-1]\)区间内一定会出现解 让\(m=sqrt(p)\) \(x\)可以表示为\(m*i-j\) 那\(m,i,…