BSGS&扩展BSGS
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\{1\ldots q\right\}\),把\(b\times a^d \pmod p\)塞进哈希表里
再枚举\(c\in\left\{1\ldots q\right\}\),查询\(a^{cq}\)是否在哈希表内
最后\(cq-d\)就是答案
扩展BSGS
能求\(\gcd(a,p)\neq1\)的情况。
设\(s=\gcd(a,p)\)
若\(s\nmid b\)则无解
设\(a'=\frac{a}{s},b'=\frac{b}{s},p'=\frac{p}{s}\)
\[(a's)^x\equiv b's\pmod {p's}\]
\[a'a^{x-1}\equiv b' \pmod {p'}\]
这样每次\(p\)都会除以一个大于\(2\)的数,这个过程一定会停止(\(O(\log p)\)次)
最后会得到
\[da^{x-k}\equiv b\pmod p\]
把计算出来的\(x\)加上\(k\)输出就可以了。
但是可能存在小于\(k\)的答案
直接枚举\(0\)~\(k\),判断是否合法。
一些其他的东西
sdchr大爷说可以直接按照普通BSGS的方法做,然后把我的随机数据过掉了,但被我hack了。
表面上看当\(\gcd(a,p)\neq1\)时BSGS也可以做,但是,
\[a^{cq-d}\equiv b\pmod p\Rightarrow a^{cq}\equiv ba^d\pmod p \]
\[a^{cq-d}\equiv b\pmod p\nLeftarrow a^{cq}\equiv ba^d\pmod p\]
1式能推出2式,但2式不能推出1式(要两边同时除以\(a\)的逆元)
所以这是不对的
BSGS&扩展BSGS的更多相关文章
- [模板] BSGS/扩展BSGS
简介 前置知识: 快速幂&&O(1)快速乘 [模板] 数学基础:快速幂/乘/逆元/exGCD/(ex)CRT/(ex)Lucas定理
- BSGS与扩展BSGS
BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\(( ...
- POJ 3243 Clever Y 扩展BSGS
http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details ...
- bzoj 3283 扩展BSGS + 快速阶乘
T2 扩展BSGS T3 快速阶乘 给定整数n,质数p和正整数c,求整数s和b,满足n! / pb = s mod pc 考虑每次取出floor(n/p)个p因子,然后将问题转化为子问题. /*** ...
- BSGS和扩展BSGS
BSGS: 求合法的\(x\)使得\(a ^ x \quad mod \quad p = b\) 先暴力预处理出\(a^0,a^1,a^2.....a^{\sqrt{p}}\) 然后把这些都存在map ...
- poj 3243 Clever Y && 1467: Pku3243 clever Y【扩展BSGS】
扩展BSGS的板子 对于gcd(a,p)>1的情况 即扩展BSGS 把式子变成等式的形式: \( a^x+yp=b \) 设 \( g=gcd(a,p) \) 那么两边同时除以g就会变成: \( ...
- 扩展BSGS求解离散对数问题
扩展BSGS用于求解axΞb mod(n) 同余方程中gcd(a,n)≠1的情况 基本思路,将原方程转化为a与n互质的情况后再套用普通的BSGS求解即可 const int maxint=((1< ...
- BSGS及扩展BSGS总结(BSGS,map)
蒟蒻哪里有什么总结,只能点击%YL% 还有这位ZigZagK大佬的blog \(\mbox{BSGS}\) 模板题:洛谷P3846 [TJOI2007]可爱的质数 给定\(a,b\)和模数\(\mbo ...
- bzoj 2480——扩展BSGS
题意 给定 $a,b$ 和模数 $p$,求整数 $x$ 满足 $a^x \equiv b(mod \ p)$,不保证 $a,p$ 互质. (好像是权限题,可见洛谷P4195 分析 之前讲过,可以通过 ...
随机推荐
- 常用yum操作命令
1.yum repolist 获取当前系统有效的repolist,如下图 2.yum list,列出所有可安装的软件包 获取当前有效repolist中所能安装的所有rpm包列表,(很长,慎重),可以结 ...
- 剑指Offer-- 二叉搜索树的后序遍历序列判断
版本1:C++ class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { ) return fals ...
- H5 71-网易注册界面4
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- lower_bound函数与upper_bound函数
头文件 : algorithm vector<int>a a中的元素必须升序,用的是二分 lower_bound(a.begin(),a.end(),k) 返回a容器中,最右边的小于等于k ...
- Consecutive Subsequence CodeForces - 977F (map优化DP)·
You are given an integer array of length nn. You have to choose some subsequence of this array of ma ...
- 为什么HashMap初始大小为16,为什么加载因子大小为0.75,这两个值的选取有什么特点?
先看HashMap的定义: public class HashMap<K,V>extends AbstractMap<K,V>implements Map<K,V> ...
- eclipse中不能保存汉字的解决方法
首先分清是打开jsp页面的问题还是java文件的问题? 对于java文件,只要在你的项目上点击右键选择“Propertise”(属性)然后点击“Info”标签将里面的Text file enco ...
- JS 验证输入框输入 只允许输入正实数(正整数,正小数),其他情况下不能输入 oninput事件
input标签的oninput事件 要求输入框只输入正实数,包括整数和小数. 具体要求:整数部分不超过7位,可以没有小数,若有位数不超过2位. <input type="text&qu ...
- MySQL — 优化之explain执行计划详解(转)
EXPLAIN简介 EXPLAIN 命令是查看查询优化器如何决定执行查询的主要方法,使用EXPLAIN,只需要在查询中的SELECT关键字之前增加EXPLAIN这个词即可,MYSQL会在查询上设置一个 ...
- 在 Ubuntu14.04 上搭建 Spark 2.3.1(latest version)
搭建最新的 Spark 2.3.1 . 首先需要下载最新版 jdk .目前 2.3.1 需要 8.0 及其以上 jdk 才可以允许. 所以如果你没有 8.0 jdk 安装好了之后会报错.不要尝试安装 ...