题意 给定 \(y,z,p\),求最小的正整数 \(x\) 满足 \(y^x\equiv z\bmod p\),保证 \(p\) 是质数. \(\texttt{Data Range:}2\leq y,z<p<^{31}\) 题解 BSGS 裸题. 这题其实我一年前就做过了,但是现在发现差点背不得 BSGS 了,所以重新写了一遍. 背 BSGS 其实只要掌握原理就好了. 首先考虑分块.令 \(x=am-b,m=\sqrt{p}\),那么就有 \[y^{am}\equiv zy^b\pmod p…
题目描述 给定一个质数P(2<=P<2312^{31}231),以及一个整数B(2<=B<P),一个整数N(2<=N<P). 现在要求你计算一个最小的L,满足BL≡N(modP). 题目分析 BSGS裸题. 偷一张网上看到的好图来说明一下BSGS算法(转侵删) Code #include<iostream> #include<cstdio> #include<cmath> #include<map> using names…
题目链接 \(BSGS\)模板题..不会点这里 #include <cstdio> #include <cmath> #include <map> using namespace std; typedef long long ll; int a, b, p; int fast_pow(int n, int k){ //n^k%p int ans = 1; while(k){ if(k & 1) ans = (ll)ans * n % p; n = (ll)n *…
题目 用一道板子题来复习一下\(bsgs\) \(bsgs\)用于求解形如 \[a^x\equiv b(mod\ p)\] 这样的高次不定方程 由于费马小定理的存在,我们可是直接暴力扫一遍\(p\),由于\(p-1\)次之后肯定会有循环节出现,所以\(O(p)\)时间内就可以出解 \(bsgs\)本质上就是一种分块了 设\(m=ceil(\sqrt{p})\),我们设\(x=i\times m-j\) 显然我们只需要\(i,j\in[0,m]\)就可以令\(x\)表示\([0,p]\)之间的所有…
题意 求最小的\(x\)满足\(a^x \equiv b\mod p\) 想法 这个是标准的板子题,\(BSGS\)算法可以用来解决\(a^x \equiv b\mod p\) 和 \(x^a \equiv b\mod p\)问题 本题是前者 我们考虑这样 \(a^{A * \sqrt p - B} \equiv b\mod p\) 有 \(a^{A * \sqrt p} \equiv ba^{B}\mod p\) 其中(\(A,B < \sqrt p\)) 我们先枚举\(B\)统计出\(ba^…
Luogu 2801 教主的魔法 | 分块模板题 我犯的错误: 有一处l打成了1,还看不出来-- 缩小块大小De完bug后忘了把块大小改回去就提交--还以为自己一定能A了-- #include <cstdio> #include <cstring> #include <algorithm> #include <set> using namespace std; typedef long long ll; #define space putchar(' ')…
https://www.luogu.com.cn/problem/P3846 BSGS这个东西是用来干啥的? 形如下面这个式子: \[a^b = c\;(mod\;p) \] 其中:p是一个质数.\(2\leq a,b<p\leq2^{31}-1\) 求一个最小的正整数b,使得式子成立 首先,我们要知道一个东西.这个式子是有循环节的 根据费马小定理:p是质数,且a不是p的倍数时 有:\(a^{p-1}\equiv1\;(mod\;p)\) 而:\(a^0=1\) 因此答案是落在\([0,p-2]…
题目链接:https://www.luogu.org/problemnew/show/P3384 诶又给自己留了个坑..不想写线段树一大理由之前的模板变量名太长 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define lson left, mid, rt<<1 #define rson mid + 1, right, rt<&…
线段树的模板题 题目链接:https://www.luogu.org/problemnew/show/P3372 update区间修改,query区间求和 #include <iostream> #include <cstdio> #include <algorithm> #define ll long long #define lson left, mid, rt<<1 #define rson mid+1, right, rt<<1|1 us…
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 解决了. 时间复…