题意

求最小的\(x\)满足\(a^x \equiv b\mod p\)

想法

这个是标准的板子题,\(BSGS\)算法可以用来解决\(a^x \equiv b\mod p\) 和 \(x^a \equiv b\mod p\)问题

本题是前者

我们考虑这样 \(a^{A * \sqrt p - B} \equiv b\mod p\)



\(a^{A * \sqrt p} \equiv ba^{B}\mod p\)

其中(\(A,B < \sqrt p\))

我们先枚举\(B\)统计出\(ba^B\)的答案用\(hash 或者 map\)给存下来

再枚举\(A\)统计答案即可

代码(与想法里的字符不同)

#include<iostream>
#include<cstdio>
#include<map>
#include<cmath>
#define ll long long using std::map; ll a,b,p;
ll A,B,minn = 0x3f3f3f3f; map<ll,ll>QWQ; ll ans[1000],cnt; int main(){
scanf("%lld%lld%lld",&p,&a,&b);//5 2 3 2 ^ x == 3 (mod 5)
ll s = ceil(sqrt(p));
if(a % p == 0){
puts("no solution");
return 0;
}
QWQ[s] = 0;
B = b,A = 1;
for(int i = 1;i <= s;++i){
B = (B * a) % p;
A = (A * a) % p;
QWQ[B] = i;
}
ll now = 1;
for(int i = 1;i <= s;++i){
now = (now * A) % p;
if(QWQ[now]){
std::cout<<(i * s - QWQ[now] + 2 * p) % p<<std::endl;
return 0;
}
}
puts("no solution");
}

[TJOI2007] 可爱的质数的更多相关文章

  1. [Luogu] P3846 [TJOI2007]可爱的质数

    题目描述 给定一个质数P(2<=P<2312^{31}231),以及一个整数B(2<=B<P),一个整数N(2<=N<P). 现在要求你计算一个最小的L,满足BL≡ ...

  2. Luogu P3846 [TJOI2007] 可爱的质数/【模板】BSGS

    题意 给定 \(y,z,p\),求最小的正整数 \(x\) 满足 \(y^x\equiv z\bmod p\),保证 \(p\) 是质数. \(\texttt{Data Range:}2\leq y, ...

  3. 【[TJOI2007]可爱的质数】

    题目 用一道板子题来复习一下\(bsgs\) \(bsgs\)用于求解形如 \[a^x\equiv b(mod\ p)\] 这样的高次不定方程 由于费马小定理的存在,我们可是直接暴力扫一遍\(p\), ...

  4. 【洛谷 P3846】 [TJOI2007]可爱的质数 (BSGS)

    题目链接 \(BSGS\)模板题..不会点这里 #include <cstdio> #include <cmath> #include <map> using na ...

  5. BSGS及扩展BSGS总结(BSGS,map)

    蒟蒻哪里有什么总结,只能点击%YL% 还有这位ZigZagK大佬的blog \(\mbox{BSGS}\) 模板题:洛谷P3846 [TJOI2007]可爱的质数 给定\(a,b\)和模数\(\mbo ...

  6. new 经典基础模板总结

    NOIP-NOI-ZJOI基础模板总结 目录 C++语言和STL库操作 重载运算符操作 /* 重载运算符 格式 如重载小于号 这里是以x递减为第一关键字比较,y递减为第二关键字比较 */ bool o ...

  7. [note]BSGS & exBSGS

    BSGS (感觉这东西还是要写一下) BSGS主要用于求解形如\(x^k=y\pmod p\)(注意这里p与x互质)这样的方程的最小正整数解的问题 设\(m=\lceil\sqrt p\rceil,k ...

  8. 大步小步法(BSGS) 学习笔记

    \(\\\) BSGS 用于求解关于 \(x\) 的方程: \[ a^x\equiv b\pmod p\ ,\ (p,a)=1 \] 一般求解的是模意义下的指数,也就是最小非负整数解. \(\\\) ...

  9. BSGS算法(大小步算法)

    $BSGS$ 算法 $Baby\ Steps\ Giant\ Steps$. 致力于解决给定两个互质的数 $a,\ p$ 求一个最小的非负整数 $x$ 使得 $a^x\equiv b(mod\ p)$ ...

随机推荐

  1. Hash窃取与传递

    Hash窃取与传递 NTHASH(NTLM) 在 Windows中, 存储的密码Hash就叫做 NTHash,也叫做 NTLM,其中NTLM 全称是 "NT LAN Manager" ...

  2. vue基本指令与脚手架基本配置

    脚手架(@vue/cli)创建项目启动服务 1.创建项目 vue create 项目名字 2.启动项目 进入项目根目录,运行以下命令 yarn serve 3.脚手架目录代码分析 ├── node_m ...

  3. [JVM-6]类加载器

    定义 前面说过加载阶段是一个可以让设计人员高度自控的模块,因为类文件的源头可以是多种多样的,代码生成.反射生成或从网络中生成等.因此类加载器作为对这些文件的处理就显得尤为重要. 但类加载器的功能不仅如 ...

  4. Coursera Deep Learning笔记 改善深层神经网络:超参数调试 正则化以及梯度相关

    笔记:Andrew Ng's Deeping Learning视频 参考:https://xienaoban.github.io/posts/41302.html 参考:https://blog.cs ...

  5. 2021.8.14考试总结[NOIP模拟39]

    T1 打地鼠 全场就俩人没切,还有一个是忘关$freopen$了. $code:$ 1 #include<bits/stdc++.h> 2 #define rin register sig ...

  6. UVA-1498 Activation

    UVA-1498 DP应该是肯定的,设 f [ i ] [ j ] 表示现在对中共有 i 人,Tomato在第 j 个,出现所求情况的概率,我们可以很(简单的)艰难的列出下列方程: f[i][1] = ...

  7. 解决svn异常报错“”cleanup failed to process the following paths …… previous operation has not finished”

    参考高票答案https://stackoverflow.com/questions/10128201/subversion-stuck-due-to-previous-operation-has-no ...

  8. 开关电源(DC-DC)与LDO电源的区别---纹波

    https://blog.csdn.net/edadoc2013/article/details/78435775

  9. advanced base-scripting guide in chinese(高级Bash脚本编程指南-10)

    <高级Bash脚本编程指南>Revision 10中文版 github上链接地址: https://github.com/LinuxStory/Advanced-Bash-Scriptin ...

  10. 0x04

    二分: while(l<r) { int mid=(l+r)/2; if(符合条件) r=mid; else l=mid+1; } 固定下二分的写法: 终止条件:l==r: 取mid=(l+r) ...