首页 > 其他分享 >BSGS学习笔记

BSGS学习笔记

时间:2024-02-23 14:35:52浏览次数:23  
标签:ll sqrt 学习 varphi 笔记 equiv bmod BSGS

1. 求解问题

1.1. 高次同余方程

给定 \(a,b,p\) , \(a,p\) 互质,求满足 \(a^x \equiv b (\bmod\ p)\)的解 \(x\)

2. 解法

由扩展欧拉定理 \(a^p \equiv a^{x\ mod\ \varphi(p)}\ (\bmod\ p)\)

得 \(a^x\) 模 \(p\) 意义下的最小循环节为 \(\varphi(p)\)

\(\because\ \varphi(p)<p\)

\(\therefore\) 在 \(0\) ~ \(p\) 范围内,一定能找到最小的 \(x\)

2.1. 暴力枚举

时间复杂度 \(O(p)\)

2.2. BSGS

令 \(x=im-j\) ,满足 \(m=\lceil \sqrt{p}\ \rceil,i \in [1,m],j \in [0,m-1]\)

有 \(a^{im-j} \equiv b (\bmod\ p)\)

即 \((a^m)^i \equiv ba^j(\bmod\ p)\)

1.枚举 \(j\) ,计算等式右边的结果,存入哈希表,结果相同,则取较大的 \(j\)

2.枚举 \(i\) ,计算左边的结果,在哈希表中查找,用 \(x=im-j\) 求答案

因为\(m=\lceil \sqrt{p}\ \rceil,i,j \le m\),时间复杂度为\(O(\sqrt{p})\)

3. 代码

例题: [TJOI2007] 可爱的质数/【模板】BSGS

#include<cstdio>
#include<cmath>
#include<map>
#define ll long long
using namespace std;
map<ll,ll> h;
ll bsgs(ll a,ll b,ll p)
{
	a%=p,b%=p;
	if(b==1) return 0;
	ll m=ceil(sqrt(p));
	ll t=b;
	h[b]=0;
	for(int j=1;j<m;j++)
	{
		t=t*a%p;
		h[t]=j;
	}
	ll x=1;
	for(int i=1;i<=m;i++)
	{
		x=x*a%p;
	}
	t=1;
	for(int i=1;i<=m;i++)
	{
		t=t*x%p;
		if(h.count(t))
		{
			return i*m-h[t];
		}
	}
	return -1;
	
}
ll n,b,p;
int main()
{
	scanf("%lld%lld%lld",&p,&b,&n);
	ll res=bsgs(b,n,p);
	if(res==-1) printf("no solution");
	else printf("%lld",res);
	return 0;
}

本人很菜,有锅请各位大佬指出

标签:ll,sqrt,学习,varphi,笔记,equiv,bmod,BSGS
From: https://www.cnblogs.com/wangsiqi2010916/p/18029441

相关文章

  • 基于yolov2深度学习网络的车辆行人检测算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本MATLAB2022a 3.算法理论概述      近年来,深度学习在计算机视觉领域取得了显著成果,特别是在目标检测任务中。YOLO(YouOnlyLookOnce)系列算法作为其中的代表,以其高效和实时的性能受到广泛关注。YOLOv2,作为YOL......
  • 概率学习笔记
    一些定义随机事件:某些现象,在个别试验中,其结果呈不确定性,但在大量重复试验中其结果又具有统计规律性。随机试验:可以在相同的条件下重复进行每次试验的可能结果可以不止一个,并且能事先明确试验的所有可能结果进行一次试验之前不能确定哪个结果会出现样本空间:某个随机试验的......
  • m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要        随着人工智能技术的快速发展,人脸识别技术已经广泛应用于身份验证、安全监控、智能支付等领域。活体人脸和视频人脸识别系统是其中的重要分支,旨在通过深度学习网络对人脸进行高效、准确......
  • 操作系统复试笔记
    第三章进程管理进程间直接通信方式:管道、共享内存进程间间接通信方式:消息队列、文件、信箱、信号量公用队列属于临界资源CPU繁忙型作业类似于长作业,需要耗费大量处理机时间,故先到先服务算法有利于CPU繁忙型作业;IO繁忙型作业类似于短作业,需要频繁请求IO操作而被阻塞,占用CPU的......
  • 期望学习笔记
    1.定义在一定区间内变量取值有有限个,或数值可以一一列举出来的变量称为离散型随机变量,一个离散型随机变量的数学期望是试验中每次可能的结果乘以其结果概率的总和信息学奥赛中的期望问题,大多数都是求离散型随机变量的数学期望,如果x是一个离散型随机变量,输入值为\(x_1,x_2,\dots......
  • 基环树学习笔记
    1.定义基环树,又称环套树,n个点n条边,也就是一棵树多一条边,形成唯一的环,这是保证这n个点n条边构成的是一个连通图的时候才是唯一环,如果图不连通但是每个连通块点数都等于边数的时候这个图就是一个基环树森林,可以有多个环如果一张有向弱连通图每个点的入度都为1,则称它是一棵基环外......
  • 《程序是怎样跑起来的》第五章读书笔记
    从都具有存储程序命令和数据这点来看,内存和磁盘的功能是相同的。在计算机的五大部位中,内存和磁盘也都也都被归类为存储部件。不过利用电流来实现存储的内存,同利用磁效应来实现存储的磁盘,还是有差异的,而从存储容量来看,内存是告诉高价,而磁盘则是低速廉价。程序保护在存储设备中,通过......
  • 扫描线学习笔记
    1.引入扫描线多用于图形上,是一条线在图形上扫来扫去,它一般被用来解决图形面积,周长,以及二维数点等问题。2.扫描线求面积并如下图:我们模拟一条扫描线,使它从下往上扫过整个平面,这条扫描线会在遇到横向线段的时候停下来更新一些东西。那么整个图形就可以找出四条线段,如图:更新的......
  • 【文化课学习笔记】【数学】函数(上)
    【数学】函数(上)概念【本质】唯一确定的对应。【定义】一般地,设\(A,B\)是非空的实数集,如果对于集合\(A\)中的任意一个数\(x\),按照某种确定的对应关系\(f\),在集合\(B\)中都有唯一确定的数\(y\)和它对应,那么就称\(f:A\toB\)为从集合\(A\)到集合\(B\)的一个函数......
  • SpringMVC学习
    SpringMVC是Spring提供的用于简化web开发的框架。 1.5 Servlet能够响应请求的对象。接收请求,返回响应SpringMVC可以认为是Servlet的封装。  1.6SpringMVC开发流程回顾各种配置。Controller,DispatchServlet, 1.7......