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 分析 之前讲过,可以通过 ...
随机推荐
- xadmin后台页面的自定制
01-自定制页面 注:最近找到了更好的解决办法:重写钩子函数版 https://www.cnblogs.com/pgxpython/p/10593507.html 需求背景:根据要实现的功能需求,x ...
- Docker镜像的修改和自定义
一.docker镜像的更新 (1)启动镜像,写入一些文件或者更新软件 docker run -it 3afd47092a0e[root@44652ba46352 /]# ls (2)更新镜像 dock ...
- 旋转数组的最小数字 - 剑指offer 面试题8
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋 ...
- H5 文字属性
03-文字属性 我是文字 我是文字 abc我是段落 <!DOCTYPE html> <html lang="en"> <head> <me ...
- 运行Maven项目时出现invalid LOC header (bad signature)错误,Tomcat不能正常启动
作为Maven小白,今天这问题困扰了我好久,经过多次在网上查询,终于找到了原因.明明一个小问题却耗费很多时间,着实不应该,所以必须记录一下. 报错信息如下: 对话框: 控制台: <span st ...
- 软件工程(FZU2015) 赛季得分榜,第二回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- 多线程系列之七:Read-Write Lock模式
一,Read-Write Lock模式 在Read-Write Lock模式中,读取操作和写入操作是分开考虑的.在执行读取操作之前,线程必须获取用于读取的锁.在执行写入操作之前,线程必须获取用于写入的 ...
- Windows 机器上面同时安装mysql5.6 和 mysql5.7 的方法
1. 自己遇到的两个坑: . mysql 登录的时候 需要使用-P 来指定端口号 不然默认走 呢 . mysql 5.6 和 mysql 5.7 更改用户密码的命令不一样.. 我这边浪费了很长时间: ...
- [转帖]Htop 使用详解
htop使用详解 https://www.cnblogs.com/yqsun/p/5396363.html 一.Htop的使用简介 大家可能对top监控软件比较熟悉,今天我为大家介绍另外一个监控软件H ...
- 逻辑斯特回归tensorflow实现
calss #!/usr/bin/python2.7 #coding:utf-8 from __future__ import print_function import tensorflow as ...