bsgs整理

目录

  • bsgs问题 或 poj2417:
  • 概述
  • 代码
  • exbsgs
  • 鸣谢 \(gzy gzy gzy\)

bsgs问题 或 poj2417:

给定质数\(p\),给定\(a\),\(b\),\((a,p)=1\)
求出最小的整数x,使得\(a^{x}≡b(mod p)\)

概述

由费马小定理可以知道
\(a^{x+p-1}≡a^{x}≡b(mod p)\)
所以如果有解那\([0,p-1]\)区间内一定会出现解
\(m=sqrt(p)\)
\(x\)可以表示为\(m*i-j\)
\(m,i,j\)都是在根号规模的
\(a^{m*i-j}≡b(mod p)\)
\(\frac{a^{m*i}}{a^{j}}≡b(mod p)\)
\(a^{m*i}≡b*a^{j}(mod p)\)
右边\(hash\)表(一般都用stl的map)存在所有的j取值
左边暴力枚举i(因为是-j,所以从1枚举,要不然就成负数了,找出来的就不一定是最小解)
如果\(a^{m*i}\)在hash表中存在,那就有解,也是最小解,结束吧
如果根号范围内还没有解,那就真的没解
算法思想:分块
算法缺陷:p是质数
算法复杂度\(\sqrt{n}\)
\(map\)常数也许很高

代码

#include <iostream>
#include <cmath>
#include <map>
#include <cstdio>
#define ll long long
using namespace std;
ll a,b,p;
map<ll,ll> hasH;
int main() {while(scanf("%lld%lld%lld",&p,&a,&b)!=EOF) {ll m=floor(sqrt(p));hasH.clear();ll tmp=1;hasH[b]=1;for(ll i=1;i<=m;++i) tmp=tmp*a%p,hasH[tmp*b%p]=i+1;ll xx=tmp,i=1,ans=-1;for(;i<=m;++i) {if(hasH[xx]) {ans=m*i%p-(hasH[xx]-1);break;}xx=xx*tmp%p;}if(ans==-1) puts("no solution");else printf("%d\n",ans);}return 0;
}

exbsgs

咕咕咕咕

鸣谢 \(gzy gzy gzy\)

转载于:https://www.cnblogs.com/dsrdsr/p/10352136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463520.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

两个指针变量可以相减

两个指针变量可以相减转载于:https://www.cnblogs.com/LoveFishC/archive/2012/07/23/3845529.html

linux下修改max_user_processes和open_file的最大值

从事分布式服务器开发工作的都会遇到&#xff0c;linux下open_file的值默认是1024&#xff1b;max user processes的值默认是4096&#xff0c;在实际用于中&#xff0c;这两个值严重不足&#xff0c;常常需要调整这两个值。默认配置如下&#xff1a; 可以通过以下两种方式修改&…

Silverlight 全屏显示

privatevoidFullScreenButton_Click(objectsender, RoutedEventArgs e) { Application.Current.Host.Content.IsFullScreen Application.Current.Host.Content.IsFullScreen?false:true; }转载于:https://www.cnblogs.com/star250/archi…

IP SLA的路径控制

一、定义SLA 服务水平协议&#xff08;简称&#xff1a;SLA&#xff0c;全称&#xff1a;service level agreement&#xff09;是在一定开销下为保障服务的性能和可靠性&#xff0c;服务提供商与用户间定义的一种双方认可的协定。通常这个开销是驱动提供服务质量的主要因素。简…

创业动力衰减 中国面临危险挑战

近日&#xff0c;在翻阅1月份出的一书《赢道&#xff1a;成功创业者的28条戒律》时&#xff0c;对目前国内的创业形势产生了近乎激动的想法。从目前的创业情况看&#xff0c;我认为&#xff0c;中国80年代青年的创业动力正在衰减&#xff0c;对照2005年—2007年间各种创业沙龙如…

【linux】linux系统中常见配置文件及目录说明

1.配置文件/proc/sys/fs/file-nr 里文件里显示三个数字 [rootlocalhost logs]# cat /proc/sys/fs/file-nr 2112 0 2100000已分配文件句柄的数目 已使用文件句柄的数目 文件句柄的最大数目 上面第二项的值为0表示分配的文件…

6-14 数据库高级

--先通过设计器手动添加&#xff0c;然后通过代码来添加--手动增加约束--手动删除一列(删除EmpAddress列) alter table Employees drop column EmpAddress go--手动增加一列(增加一列EmpAddr varchar(1000)) alter table Employees add EmpAddr varchar(1000)--手动修改一下Emp…

ptmalloc,tcmalloc和jemalloc内存分配策略研究

转载&#xff1a;https://cloud.tencent.com/developer/article/1173720 操作系统内存布局 各种malloc的内存分配管理方式离不开操作系统的内存布局策略。 32位经典内存布局 32位系统下经典内存布局如上&#xff0c;程序起始的1GB地址为内核空间&#xff0c;接下来是向下增长…

AJAX之表单即时验证

最近互联网上比较火热的话题当然是关于WEB2.0的应用&#xff0c;其中AJAX又是WEB2.0的核心之一。AJAX是Asynchronous JavaScript and XML 的缩写。它并不是一门新的语言或技术&#xff0c;它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用&#xff0c;它包…

黄聪:PHP获取MAC地址(转)

<?php /** 获取网卡的MAC地址原码&#xff1b;目前支持WIN/LINUX系统 获取机器网卡的物理&#xff08;MAC&#xff09;地址 **/ class GetMacAddr{ var $return_array array(); // 返回带有MAC地址的字串数组 var $mac_addr; function GetMacAddr($o…

Tcmalloc

Tcmalloc Ptmalloc在性能上还是存在一些问题的&#xff0c;比如不同分配区&#xff08;arena&#xff09;的内存不能交替使用&#xff0c;比如每个内存块分配都要浪费8字节内存等等&#xff0c;所以一般倾向于使用第三方的malloc。 Tcmalloc是Google gperftools里的组件之一。…

今天学习的成果

其实主要搞的是数组 还有就是宏的使用。 现将数组代码列出如下&#xff1a; array(){ int a[10],i; printf("Please Input array value"); for(i0;i<10;i) scanf("%d",&a[i]); for(i0;i<10;i) printf("a[%d]%d\n",i,a[i]);} 功能很简…

JVM自动内存管理机制——Java内存区域(下)

一、虚拟机参数配置 在上一篇《Java自动内存管理机制——Java内存区域&#xff08;上&#xff09;》中介绍了有关的基础知识&#xff0c;这一篇主要是通过一些示例来了解有关虚拟机参数的配置。 1、Java堆参数设置 a&#xff09;下面是一些简单的使用参数 其中最后一个是一个运…

PHP版选择排序法

2019独角兽企业重金招聘Python工程师标准>>> <?php// 选择排序法函数function selection_sort(&$array) {$array_length count($array); // 数组的长度$temp 0; // 交换时用到的临时变量for ($i 0; $i < $array_length - 1; $i) {// 认为数组第$i个元…

boost::stable_vector简单解析

由于vector底层实现的机制是一个动态数组&#xff0c;因此使用std::vector<T>时&#xff0c;如果海量数据量时&#xff0c;会导致vector底层的数组很大很大&#xff0c;这样就会导致database很快就会出现内存不足而导致系统停止运行或卡住&#xff0c;这时就要考虑是否用…

PHP程序员面试中经常被提问的问题【转载】

1&#xff0e; Include 与 require的区别&#xff0c;require和require_once的效率哪个高&#xff1f; Php在遇到include时就解释一次&#xff0c;如果页面中出现10次include&#xff0c;php就解释10次&#xff0c;而php遇到require时只解释一次&#xff0c;即使页面出现多次re…

【转】英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析

http://hi.baidu.com/lovegenggeng/blog/item/5d5c594c240830fed72afcd0.html英文论文中“such as, for example, e.g., i.e., etc., et al. ”的用法分析 黄龙旺  龚汉忠 (上海交通大学学报编辑部, 200030,上海) 在英文论文的编辑加工中,常会遇到such as, for example, e. g…

理解zookeeper选举机制

转载&#xff1a;https://www.cnblogs.com/shuaiandjun/p/9383655.html 一、zookeeper集群 配置多个实例共同构成一个集群对外提供服务以达到水平扩展的目的&#xff0c;每个服务器上的数据是相同的&#xff0c;每一个服务器均可以对外提供读和写的服务&#xff0c;这点和red…

使用交互环境

使用交互环境许多脚本语言的解释器都提供了交互环境&#xff0c;我们可通过此环境与计算机沟通交流。为什么叫做交互环境&#xff1f;因为我们在这里通过编程语言与计算机沟通&#xff0c;让它做任何事情&#xff0c;它都会立刻照办并给予我们反馈。运行REBOL 解释器的方式很简…

[原创]K8 cping 3.0大型内网渗透扫描工具

[原创]K8 Cscan 大型内网渗透自定义扫描器 https://www.cnblogs.com/k8gege/p/10519321.html Cscan简介:何为自定义扫描器&#xff1f;其实也是插件化&#xff0c;但Cscan不需要编程同样可实现自定义功能&#xff0c;这比单纯插件化更容易实现插件功能Cscan旨在为用户提供一个高…