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的更多相关文章

  1. [模板] BSGS/扩展BSGS

    简介 前置知识: 快速幂&&O(1)快速乘 [模板] 数学基础:快速幂/乘/逆元/exGCD/(ex)CRT/(ex)Lucas定理

  2. BSGS与扩展BSGS

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

  3. POJ 3243 Clever Y 扩展BSGS

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

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

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

  5. BSGS和扩展BSGS

    BSGS: 求合法的\(x\)使得\(a ^ x \quad mod \quad p = b\) 先暴力预处理出\(a^0,a^1,a^2.....a^{\sqrt{p}}\) 然后把这些都存在map ...

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

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

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

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

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

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

  9. bzoj 2480——扩展BSGS

    题意 给定 $a,b$ 和模数 $p$,求整数 $x$ 满足 $a^x \equiv  b(mod \ p)$,不保证 $a,p$ 互质. (好像是权限题,可见洛谷P4195 分析 之前讲过,可以通过 ...

随机推荐

  1. PySpider框架的基本用法

    pyspider安装: 3.7之后无法正常使用,使用可以下载Python3.6或以下,或者修改pyspider内部代码 ———————————————————————————————————————— ...

  2. H5 37-背景缩写

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. CF892.B. Wrath

    ---恢复内容开始--- 题意: 有n个犯人,手上都有个长度为Li的武器,当铃响时大家同时挥动武器,只能把前面攻击范围内的敌人杀死,问最后还剩几个人. 题目传送门: [http://codeforce ...

  4. python文件读和写

    fileHandle = open ( 'G:/qqfile/1.txt','w' )fileHandle.write('abcd')#写文件 地址要用反斜杠fileHandle.close() fi ...

  5. 快速失败/报错机制 - fail-fast

    一.快速报错机制(fail-fast) 这是<Java编程思想>中关于快速报错机制的描述 Java容器有一种保护机制,能够防止多个进程同时修改同一个容器的内容.如果在你迭代遍历容器的过程中 ...

  6. Redis教程(Linux)

    这里汇总了从简单的安装到较为复杂的配置,由浅入深的学习redis... 一 , 安装 1) redis扩展安装 从官网上下载扩展压缩包 wget http://pecl.php.net/get/red ...

  7. C#复习笔记(1)--C#开发的进化史

    前言:陆续使用C#已经有一年半的时间.中间做过一些应用,现在为了有更高的提升,决定重新看一遍C# in depth,并总结一些笔记. 一.从简单的数据类型开始 上面是C#1到C#4中的一部分演变历程. ...

  8. Java8 Stream实例--统计出所有含‘张’字的人员的平均年龄

    package com.zhangxueliang.demo; import java.util.ArrayList; import java.util.List; import java.util. ...

  9. Web移动端---iPhone X适配(底部栏黑横线)

    一.相信大家有被iPhone X底部黑色横线支配的恐惧 上面我们可以看到,底部的导航栏被一条黑色横线所盖住,那么就很烦.下面我们可以开始进行适配环节 1.首先我们可以用 JS 判断手机环境是不是 iP ...

  10. HTML5经典案例学习-----新元素添加文档结构

    直接上代码了,大家如果发现问题了,记得提醒我哦,谢谢啦,嘻嘻 <!DOCTYPE html> <!-- 不区分大小写 --> <html lang="en&qu ...