[CQOI 2018]破解D-H协议
Description
给出 \(A,B,P,g\) ,\(g\) 是 \(P\) 的原根,求出 \(A\equiv g^a\pmod{P}\) , \(B\equiv g^b\pmod{P}\) 中的 \(a,b\) ,并输出 \(g^{ab}\) 。
\(2\leq A,B<P<2^{31},2\leq g<20,1\leq n\leq 20\)
Solution
\(BSGS\) 板子啊,由于 \(g\) 是 \(P\) 原根,解是唯一的。
Code
#include <bits/stdc++.h>
using namespace std;
map<int, int>mp;
int g, p, n, a, b;
int quick_pow(int a, int b) {
int ans = 1;
while (b) {
if (b&1) ans = 1ll*ans*a%p;
b >>= 1, a = 1ll*a*a%p;
}
return ans;
}
int BSGS(int a, int b) {
mp.clear();
int lim = ceil(sqrt(p)), cnt = b%p;
for (int i = 0; i <= lim; i++, cnt = 1ll*cnt*a%p)
mp[cnt] = i;
int t = cnt = quick_pow(a, lim);
for (int i = 1; i <= lim; i++, cnt = 1ll*cnt*t%p)
if (mp.count(cnt)) return lim*i-mp[cnt];
}
void work() {
scanf("%d%d%d", &g, &p, &n);
while (n--) {
scanf("%d%d", &a, &b);
a = BSGS(g, a); printf("%d\n", quick_pow(b, a)) ;
}
}
int main() {work(); return 0; }
[CQOI 2018]破解D-H协议的更多相关文章
- intellij idea 2018注册码|intellij idea 2018破解文件下载(附破解教程/汉化包)
intellij idea 2018破解文件http://www.3322.cc/soft/37661.html intellij idea 2018注册码是一款针对“intellij idea 20 ...
- phtoshop cs6 下载安装及破解方法(另附Photoshop CC 2018破解版图文教程)
前言: 前端虽然用PS不多,但有时需要用PS切图:UI给你PSD图,需要取色,查看字体颜色大小:测量元素宽高等 但有时想找一个“麻雀虽小,五脏俱全”又是破解版的PS,也不是那么容易的 注:ps完整版不 ...
- Acrobat pro Dc 2018破解版|Adobe Acrobat pro Dc 2018中文破解版下载(附序列号/免破解)
Acrobat pro Dc 2018破解版是由Adobe公司开发的一款PDF编辑软件,它可以以PDF格式制作和保存用户的文档,以此方便浏览和打印,或使用更高级的功能,且PDF格式的文档可如实地保留原 ...
- IntelliJ IDEA 2018 破解过程[详细步骤](Mac OS & Windows)
注册码获取地址:http://idea.lanyus.com/ 1.软件下载 首先进入https://www.jetbrains.com官网进行下载. 2.下载破解包 可百度搜索JetbrainsCr ...
- PhpStorm 2018 破解方法
破解方法如下: 1.修改phpstrom的验证服务器地址. 在C:\Windows\System32\drivers\etc目录下打开hosts文件,并在文件最后加入 0.0.0.0 account. ...
- Good Bye 2018 (A~F, H)
目录 Codeforces 1091 A.New Year and the Christmas Ornament B.New Year and the Treasure Geolocation C.N ...
- IntelliJ IDEA 2018破解方法
1.下载idea:https://download.jetbrains.8686c.com/idea/ideaIU-2018.2.exe 2.安装idea 3.下载破解补丁:http://idea.l ...
- photoshop cc 2018破解补丁(pscc2018注册机) 附使用方法
1.下载破解程序 破解文件自行到 http://www.ddooo.com/softdown/109954.htm 下载 博主可以到本博客的文件-->pscc2018zcj_109954.ra ...
- 2018.09.27 网络协议(tarjan)
描述 一些学校连接在一个计算机网络上.学校之间存在软件支援协议.每个学校都有它应支援的学校名单(学校 a 支援学校 b ,并不表示学校 b 一定支援学校 a ).当某校获得一个新软件时,无论是直接得到 ...
随机推荐
- 设计模式之复合模式(Compound Pattern)
一.什么是复合模式? 在形式上,复合模式确实是多个模式的组合,但满足了这一条并不一定是复合模式,注意它的定义: 将多个模式结合起来形成一个“框架”,以解决一般性问题 一提到“框架”,可能最容易联想到的 ...
- MessageBox实现自动延时关闭
1,首先新建一个winform窗体:MessageForm,设置StartPosition属性为Manual,Location属性值-500, -500 主要是为了让MessageForm窗体不显示在 ...
- LD算法的C++实现(基于编辑距离的文本比较算法)
算法看这里: http://www.cnblogs.com/grenet/archive/2010/06/01/1748448.html 用数组实现: #include <iostream> ...
- flask之信号
Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. pip3 install blinker 1. 内置信号 request_started = ...
- django 获取request请求对象及response响应对象中的各种属性值
django request对象和HttpResponse对象 HttpRequest对象(除非特殊说明,所有属性都是只读,session属性是个例外) HttpRequest.scheme 请求方案 ...
- poj1456---贪心
题目大意: 有n个商品,每个商品有价值和一个最后期限,过了这个期限该商品就不能卖出去了 问你如何去卖,能得到最大的收益.(每个东西卖一天,不能同时卖两种东西) 思路: 贪心: 先按价值对商品排序,价值 ...
- 详述MySQL服务在渗透测试中的利用
本文作者:i春秋签约作家——Binghe 致力于书写ichunqiu社区历史上最长篇最细致最真实的技术复现文章. 文章目录: MySQL之UDF提权 MySQL之MOF提权 MySQL之常规写启动项提 ...
- ng的点滴记录
1,directive http://damoqiongqiu.iteye.com/blog/1917971/ 2,constructor https://segmentfault.com/q/10 ...
- Storm Trident状态
Trident中有对状态数据进行读取和写入操作的一流抽象工具.状态既可以保存在拓扑内部,比如保存在内容中并由HDFS存储,也可以通过外部存储(比如Memcached或Cassandra)存储在数据库中 ...
- 解决chrome无法启用印象笔记-剪藏功能
新版Chrome浏览器安全的问题,导致从印象笔记官网下载的rxs(crx)文件无法直接通过drap&drop功能添加功能块.可以将rxs(crx)文件后缀名改成rar格式,然后解压,通 ...