模板最主要的是自己看得舒服,不会给自己留隐患,调起来比较简单,板子有得是,最主要的是改造出适合你的那一套。                  ——mzz

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod=;
struct Hash_Tablet{
int val,nex,id;
}edge[mod<<];int first[mod<<],num;
int a,b,c,ans;
void init(){
memset(first,,sizeof(first));
num=;
}
void insert(int val,int j){
int Hval=val%mod;
edge[++num].val=val;
edge[num].id=j;
edge[num].nex=first[Hval];
first[Hval]=num;
}
int find(int val){
int Hval=val%mod;
for(int i=first[Hval];i;i=edge[i].nex)
if(edge[i].val==val)
return edge[i].id;
return -;
}
int Bsgs(int a,int b,int c){
init();
if(b==) return ;
int m=ceil(sqrt(c*1.0));
int j,p=,x=;
for(int i=;i<m;i++,p=p*a%c)
insert(p*b%c,i);
for(int i=m;i<=c+m;i+=m){
if((j=find(x=x*p%c))!=-)
return i-j;
}return -;
}
signed main(){
while(~scanf("%lld%lld%lld",&c,&a,&b)){
ans=Bsgs(a%c,b%c,c);
ans==-?puts("no solution"):printf("%lld\n",ans);
}return ;
}

以一道叫Discrete Logging的题为例。

Bsgs模板的更多相关文章

  1. BSGS 模板

    模板如下: 扩展版本: 求解a^k=b %p 求k,最小的k一定小于p,否则会重复,否则无解 *********************** gcd(a,p)=1时 设k=mi+v m=sqrt(p) ...

  2. bzoj2242,洛谷2485----SDOI2011计算器(exgcd,qsm,bsgs模板)

    就是一道模板题! 这里再强调一下 BSGS 考虑方程\(a^x = b \pmod p\) 已知a,b,p\((2 \le p\le 10^9)\),其中p为质数,求x的最小正整数解 解法: 注意到如 ...

  3. BSGS模板(慢速)

    //author Eterna #define Hello the_cruel_world! #pragma GCC optimize(2) #include<iostream> #inc ...

  4. bzoj 2242 [SDOI2011]计算器——BSGS模板

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2242 第一道BSGS! 咳咳,我到底改了些什么?…… 感觉和自己的第一版写的差不多……可能是 ...

  5. 【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)

    题目链接 题目描述非常直接,要求你用快速幂解决第一问,exgcd解决第二问,bsgs解决第三问. emmmm于是现学bsgs 第二问让求最小整数解好烦啊…… 假设我们要求得方程$ax+by=c(mod ...

  6. 2019牛客多校第五场C generator 2 hash,bsgs模板

    generator 2 题意 给出\(x_0,a,b,p\),有方程\(x_i\equiv (a*x_{i-1}+b)(\% p)\),求最小的i,使得\(x_i=v\),不存在输出-1 分析 经过公 ...

  7. U9249 【模板】BSGS

    题目描述 给定a,b,p,求最小的非负整数x 满足a^x≡b(mod p) 若无解 请输出“orz” 输入输出格式 输入格式: 三个整数,分别为a,b,p 输出格式: 满足条件的非负整数x 输入输出样 ...

  8. 【BSGS】BZOJ3239 Discrete Logging

    3239: Discrete Logging Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 729  Solved: 485[Submit][Statu ...

  9. BZOJ3239Discrete Logging——BSGS

    题目大意:给出$P,B,N$,求最小的正整数$L$,使$B^L\equiv N(mod\ P)$. $BSGS$模板题. #include<set> #include<map> ...

随机推荐

  1. Action请求后台出现Response already commited异常解决方法

    在编写导出功能使用action请求,在处理导出异常时期望跳转异常页,Controller中的方法返回类型String的url 在处理完逻辑导出文件后后台控制台出现 WARN  [org.springf ...

  2. POJ1611(The Suspects)--简单并查集

    题目在这里 关于SARS病毒传染的问题.在同一个组的学生是接触很近的,后面也会有新的同学的加入.其中有一位同学感染SARS,那么该组的所有同学得了SARS.要计算出有多少位学生感染SARS了.编号为0 ...

  3. Jerry Wang从2017年到2019年的自由泳学习笔记

    打腿 把注意力调整到脚部,尽量不要让他打出水面,因为在空气中大腿完全是无用功,但是如果只是脚跟出水一点,倒也没什么关心,但是主观上,要控制一下,如果你听到你的打腿是"咚咚咚咚"这样 ...

  4. CI,CD理解

    一.什么是CI,CD ​ 当我们在谈论现代的软件编译和发布流程的时候,经常会听到CI 和CD这样的缩写短语.CI很容易理解,就是持续集成. ​ 但是CD既可以指代码持续交付,也可理解为代码持续部署.C ...

  5. VMnet、VMnet1和 VMnet8的区别是什么

    1.经常使用虚拟机的人在配置网络的时候在疑惑 虚拟的 网卡 VMnet1 和 VMnet8的差别是什么 如上面的图, 是安装了一台虚拟机,下图是安装了多个网卡以及虚拟机产生的虚拟网卡 VMware N ...

  6. php中long2ip和2iplong

    <?php $string=ip2long("127.0.0.1"); $ip=long2ip($string); echo $string; echo "< ...

  7. G1垃圾收集器角色划分与重要概念详解【纯理论】

    继续接着上一次[https://www.cnblogs.com/webor2006/p/11129326.html]对G1进行理论化的学习,上一次学到了G1收集器的堆结构,回忆下: 接着继续对它进行了 ...

  8. 从OkHttp的源码来看 HTTP

    先来了解一下OkHttp的历史,最早是square公司觉得Android给的HttpClient这块的库不太好用,于是乎做了一层包装,再后来他们包装的这个库被Android官方给收回去了,而Andro ...

  9. python实现查找算法

    搜索是在一个项目集合中找到一个特定项目的算法过程.搜索通常的答案是真的或假的,因为该项目是否存在. 搜索的几种常见方法:顺序查找.二分法查找.二叉树查找.哈希查找 线性查找线性查找就是从头找到尾,直到 ...

  10. 小知识——c++关于指针的理解

    参考文章: 简介: 指针可以简化c++编程,在一些任务中没有指针是无法完成的(动态内存分配) 使用 & 可以获得变量在内存中的地址: eg: #include <iostream> ...