传送门

解题思路

  \(BSGS\)裸题??要求的是\(g^a =A (mod\) \(p)\),设\(m\)为\(\sqrt p\),那么可以设\(a=i*m-j\),式子变成

  $$ g^{i*m-j}=A\mod p$$

  然后把\(j\)移过去,

  $$g{i*m}=A*gj\mod p$$

  然后可以预处理枚举\(j\)的值用哈希存下来,每次直接\(O(m)\)询问,总的时间复杂度为\(O(T\sqrt p \log)\)

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<set>
#define int long long using namespace std;
typedef long long LL; int g,MOD,T,A,B,a,b,m;
map<int,int> mp; inline int fast_pow(int x,int y){
int ret=1;
for(;y;y>>=1){
if(y&1) ret=1ll*ret*x%MOD;
x=1ll*x*x%MOD;
}
return ret;
} inline void prework(){
m=ceil(sqrt(MOD));
int base=fast_pow(g,m),now=1;
mp[now]=0;
for(int i=1;i<=m;i++){
now=1ll*now*base%MOD;
mp[now]=i;
}
} inline int BSGS(int x){
int now=x;
if(mp.count(now)) return mp[now]*m;
for(int i=1;i<=m;i++){
now=1ll*now*g%MOD;
if(mp.count(now)) return mp[now]*m-i;
}
} signed main(){
scanf("%lld%lld%lld",&g,&MOD,&T);
prework();
while(T--){
scanf("%lld%lld",&A,&B);
a=BSGS(A); b=BSGS(B);
a=(a%(MOD-1)+MOD-1)%(MOD-1);
b=(b%(MOD-1)+MOD-1)%(MOD-1);
printf("%lld\n",fast_pow(g,1ll*a*b%(MOD-1)));
}
return 0;
}

最新文章

  1. pdsh使用
  2. C# 基础(7)--线程
  3. Linux学习进阶路线图
  4. nginx支持flv MP4 扩展nginx_mod_h264_streaming,nginx-rtmp-module-master,yamdi
  5. requirejs 优化压缩
  6. js中 的这些距离你知道吗?
  7. ThinkPHP 自动验证与自动填充无效可能的原因
  8. 图片的css自适应
  9. 【Dior风格/舒适防风面料/抗静电里衬/大身撞色拼接/精致平驳领/时尚便西款/蓝绿色】玛萨玛索男装网购商城
  10. python获取实时股票信息
  11. 【Python】@property的用法
  12. 项目管理实践【三】每日构建【Daily Build Using CruiseControl.NET and MSBuild】
  13. 业务零影响!如何在Online环境中巧用MySQL传统复制技术【转】
  14. table标签中thead、tbody、tfoot的作用
  15. java 使用https协议,cas认证PKIX path building failed错误解决方法
  16. C#技术点--修改系统时间
  17. PYTHON-进程 子进程
  18. 【Android】自动测试工具 Monkey
  19. 8. Security-oriented operating systems (面向安全的操作系统 5个)
  20. 表单,table的css

热门文章

  1. php面向对象的重写与重载
  2. 测开之路八十一:参数定义之*args和**kwargs
  3. STM32 HAL库关于串口中断烧录程序后可以正常运行,断电重启后无法进入中断的问题分析以及解决方法
  4. ECMAScript 2015 可迭代协议:迭代普通对象
  5. HDU 2512 一卡通大冒险 (第二类斯特林数)
  6. 关于VMware中的几个网络模式
  7. app本身性能测试简介
  8. [HDU5807] [BestCoder Round #86 1004] Keep In Touch (DP)
  9. CF208E Blood Cousins
  10. bat ini文件读取