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\)的逆元)
所以这是不对的
转载于:https://www.cnblogs.com/ywwyww/p/8510957.html
BSGS扩展BSGS相关推荐
- 【学习笔记】原根 / BSGS / 扩展BSGS证明及模板
文章目录 原根 BSGS大步小步算法 扩展BSGS 原根 如果两个整数a,ba,ba,b互质,则有aϕ(b)%b=1a^{\phi(b)}\%b=1aϕ(b)%b=1 定义模bbb意义下的aaa的阶为 ...
- [模板] BSGS/扩展BSGS
简介 前置知识: 快速幂&&O(1)快速乘 [模板] 数学基础:快速幂/乘/逆元/exGCD/(ex)CRT/(ex)Lucas定理 转载于:https://www.cnblogs.c ...
- (扩展)BSGS与高次同余方程
前言: 今天更BSGS算法.俗称大步小步算法(Big-Step G--Step),又称拔山盖世.北上广深.白色狗屎 . 问题: 求解指数同余方程:ax≡b(modp)a^{x}\equiv b(mod ...
- BSGS与扩展BSGS
这里写目录标题 概述 普通BSGS 解题步骤 代码模板 扩展BSGS 解题步骤 代码模板 经典例题 洛谷P4861 按钮 概述 主要用于解决an=b(mod p) 问题,求解最小非负整数n,使其满足左 ...
- NOI数学:大步小步(Baby Step Giant Step,BSGS)算法
BSGS算法求 高次同余方程:1.可爱的质数 2.计算器 BSGS算法求 高次同余方程:1.可爱的质数 2.计算器_啦啦啦32421的博客-CSDN博客 大步小步算法(BSGS)及扩展 & b ...
- 数论 —— 高次同余方程与 BSGS 算法
[概述] BSGS(Baby Step Giant Step)算法,又称大小步算法,其主要用于解形如 的高次同余方程中的 x,其核心思想是分块. 当 A 与 C 互质时,通过费马小定理: 可知,当 ...
- P4884-多少个1?【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P4884 题目大意 求一个最小的nnn使得nnn个连续的111其在模mmm意义下等于kkk. 6≤m≤1011,0& ...
- P3306-[SDOI2013]随机数生成器【BSGS】
正题 题目链接:https://www.luogu.com.cn/problem/P3306 题目大意 给出一个p,a,b,x1,tp,a,b,x_1,tp,a,b,x1,t,有xi=axi−1+b ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...
最新文章
- 医工汇聚 智竞心电 | 首届中国心电智能大赛开启招募
- 二叉查找树(二叉排序树)创建,插入,删除操作。
- 使用Apache Archiva管理Maven仓库
- python基础知识~ 等值判断和码
- mysql 学习笔记 02创建表
- 记腾讯互娱网站布局(1)
- php serialize error at offset,PHP Notice: unserialize(): Error at offset XX of XX bytes
- 洛谷P1434滑雪(逆向图的遍历搜索递归+记忆化,最长路问题)
- mysql排序后如何取最前和最后的数据_天天写order by,你知道Mysql底层如何执行吗?...
- H5+APP安卓原生插件开发+离线打包
- 边缘检测---Roberts算子
- Real Time Rendering 第一章 简介
- C# 教你如何做打印表格和排版
- 计算机word画铁路,在word中画铁路线.docx
- Excel中批量生成标签,批量打印标签。按指定模板批量打印标签
- 阿里企业云邮箱怎么申请?企业云邮箱登录界面在哪?
- 微信小程序app.json全局配置项
- 小米平板4刷入twrp
- LeetCode 字符串(简单题)
- vue 二维码+条形码识别