BSGS:

  求合法的\(x\)使得\(a ^ x \quad mod \quad p = b\)
  先暴力预处理出\(a^0,a^1,a^2.....a^{\sqrt{p}}\)
  然后把这些都存在map里 : \(map[a^x] = x\)
  一个合法的x满足\(x = k\sqrt{p} + l\)使得\(a^x = b\),因此可以直接枚举k,于是有:
  \[a^x = a^{k\sqrt{p}} \cdot a^l = b\]
  \[a^l = \frac{b}{a^{k\sqrt{p}}} = b \cdot (a^{k\sqrt{p}})^{-1}\]
  所以每次枚举k,如果可以在map内部找到\(b \cdot (a^{k\sqrt{p}})^{-1}\),那么就找到了一组合法的\(k\)和\(l\),于是就找到了一个合法解
  

扩展BSGS:

  但是注意到在算法中,需要求\((a^{k\sqrt{p}})^{-1}\),并且我们有\((a^{t}) ^ {-1} = (a^{-1})^{t}\)
  因此为了保证逆元存在,我们需要保证\(gcd(a, p) == 1\).
  但对于\(p\)不为素数的情况,并不一定可以保证\(gcd(a, p) == 1\),因此需要用到扩展BSGS。
  前置知识:\(A \equiv B (mod \quad C) \Longleftrightarrow \frac{A}{d} \equiv \frac{B}{d} (mod \quad \frac{C}{d})\)
  假设现在有:\(A^{x} \equiv B (mod \quad C)\)
  设\(d = gcd(A, C)\),则\(A = ad, B = bd, C = cd\)。
  因为:\(A^{x} = kC + B \Longleftrightarrow d | A^{x}, \quad d | kC, \quad d | (kC + B) \Longrightarrow d | B\)
  因此原式为:
  \[(ad)^{x} \equiv bd (mod \quad cd)\]
  \[a^{x}d^{x} \equiv bd (mod \quad cd)\]
  \[a \cdot a^{x - 1}d^{x - 1} \equiv b (mod \quad c)\]
  我们可以一直进行如上变换,直到\(gcd(a, c) == 1\),
  假设我们现在进行了k次形如上式的变换,则当前式为:
  \[\prod_{i = 1}^ {k}a_{i} \cdot A^{x - k} \equiv \frac{B}{\prod_{i = 1}^{k}d_{i}} (mod \quad \frac{C}{\prod_{i = 1}^{k}d_{i}})\]
  其中\(a_{i} = \frac{A}{d_{i}}\),因为每次\(d_{i}\)不一定相同,所以每次\(a_{i}\),也不一定相同。
  移项,把除法改成逆元:
  \[A^{x - k} \equiv B \cdot (\prod_{i = 1}^{k}d_{i})^{-1} \cdot (\prod_{i = 1}^{k}a_{i})^{-1} \quad (mod C \quad \cdot (\prod_{i = 1}^{k}d_{i})^ {-1})\]
  然后把\(B \cdot (\prod_{i = 1}^{k}d_{i})^{-1} \cdot (\prod_{i = 1}^{k}a_{i})^{-1}\)算出来,当做新的\(B\),做BSGS.

BSGS和扩展BSGS的更多相关文章

  1. BSGS与扩展BSGS

    BSGS \(BSGS\)算法又称大步小步\((Baby-Step-Giant-Step)\)算法 \(BSGS\)算法主要用于解以下同余方程 \[A^x\equiv B(mod\ p)\]其中\(( ...

  2. BSGS及扩展BSGS总结(BSGS,map)

    蒟蒻哪里有什么总结,只能点击%YL% 还有这位ZigZagK大佬的blog \(\mbox{BSGS}\) 模板题:洛谷P3846 [TJOI2007]可爱的质数 给定\(a,b\)和模数\(\mbo ...

  3. BSGS及扩展BSGS算法及例题

    \(BSGS(baby-step-giant-step)\)算法是用来解高次同余方程的最小非负整数解的算法,即形如这个的方程: \(a^x\equiv b(mod\ p)\) 其中\(p\)为质数(其 ...

  4. BSGS&扩展BSGS

    BSGS 给定\(a,b,p\),求\(x\)使得\(a^x\equiv b \pmod p\),或者说明不存在\(x\) 只能求\(\gcd(a,p)=1\)的情况 有一个结论:如果有解则必然存在\ ...

  5. POJ 3243 Clever Y 扩展BSGS

    http://poj.org/problem?id=3243 这道题的输入数据输入后需要将a和b都%p https://blog.csdn.net/zzkksunboy/article/details ...

  6. bzoj 3283 扩展BSGS + 快速阶乘

    T2  扩展BSGS T3 快速阶乘 给定整数n,质数p和正整数c,求整数s和b,满足n! / pb = s mod pc 考虑每次取出floor(n/p)个p因子,然后将问题转化为子问题. /*** ...

  7. poj 3243 Clever Y && 1467: Pku3243 clever Y【扩展BSGS】

    扩展BSGS的板子 对于gcd(a,p)>1的情况 即扩展BSGS 把式子变成等式的形式: \( a^x+yp=b \) 设 \( g=gcd(a,p) \) 那么两边同时除以g就会变成: \( ...

  8. 扩展BSGS求解离散对数问题

    扩展BSGS用于求解axΞb mod(n) 同余方程中gcd(a,n)≠1的情况 基本思路,将原方程转化为a与n互质的情况后再套用普通的BSGS求解即可 const int maxint=((1< ...

  9. BSGS及其扩展

    目录 定义 原理 朴素算法 数论分块 例题 Luogu2485 [SDOI2011]计算器 题解 代码 扩展 例题 Luogu4195 [模板]exBSGS/Spoj3105 Mod 代码 之前写了一 ...

随机推荐

  1. MySQL授权root

    1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 " ...

  2. html表单总结

    总结了下html表单: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  3. Boss直聘邮件通知小脚本

    Boss 基于Python3的找工作利器--Boss直聘来消息邮件通知, 自动发送简历脚本,O(∩_∩)O~ 无聊写的,因为有时候觉得找工作心急如焚,想自动回复自动发简历啊有木有~~~ github地 ...

  4. Spring学习(3):Spring架构(转载)

    1. Spring架构图 核心容器:包括Core.Beans.Context.EL模块. ●Core模块:封装了框架依赖的最底层部分,包括资源访问.类型转换及一些常用工具类. ●Beans模块:提供了 ...

  5. 各web服务器的特点和优势

    1.Tomcat 和 Jetty 面向java语言 天生就是重量级的web服务器.性能一般 2.IIS 只能在windows平台运行,windows作为服务器在稳定性与其他一些性能上不如类unix操作 ...

  6. Hyper-V虚拟机联网设置

    转自:http://www.3lian.com/edu/2012/12-22/50492.html Windows 8中内置的Hyper-V管理器可以说给许多人带来了惊喜!在Hyper-V管理器强大的 ...

  7. 关于JavaScript定时器我的一些小理解

    因为自己在平时工作中,有些功能需要用到定时器,但是定时器并不像我们表边上看到的那样,所以这周末我看看书查查资料,深入研究了一下JavaScript中的定时器,那么废话不多说,下面进入我们今天的正题. ...

  8. winform界面之固定大小随dpi

    场景: 已经更改成大小可随dpi改变,可是在用applyresoures()之后(添加更改语言功能),发现控件大小失真. 分析:applyresoures()是把该控件的属性改为程序设计的固定大小,不 ...

  9. Java微笔记(6)

  10. 我是一只IT小小鸟观后感

    知道有这么一本写“码农”经历的书,是在大一下学期的第一堂职业生涯规划课上.也是抱着蛮看一看的心态在某宝上买了印刷版的开始抱着“啃”. 看了之后还是很有感触的,首先虽然现在我们是大学的软件学院中读书,但 ...