[学习笔记]BSGS
\(\%\%\% Fading\) 早就会了,我最近才理解,当时颓废太多忘学了
1、[SDOI2013]随机数生成器
当天正好在学数列,回来发现用必修五的知识就没了……
不过特判好烦啊。
\(Code\ Below:\)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int p,a,b,x,t;
int gcd(int a,int b){
return (b==0)?a:gcd(b,a%b);
}
int fast_pow(int a,int b,int p){
int ret=1;
for(;b;b>>=1,a=1ll*a*a%p)
if(b&1) ret=1ll*ret*a%p;
return ret;
}
int bsgs(int a,int b,int p){
map<int,int> mp;
mp.clear();
int t=sqrt(p)+1,val=b,i,j;
for(i=0;i<t;i++){
mp[val]=i;
val=val*a%p;
}
a=fast_pow(a,t,p);val=1;
for(i=0;i<=t;i++){
j=mp.find(val)==mp.end()?-1:mp[val];
if(j>=0&&i*t-j>=0) return i*t-j;
val=val*a%p;
}
return -1;
}
signed main()
{
int T;
scanf("%lld",&T);
while(T--){
scanf("%lld%lld%lld%lld%lld",&p,&a,&b,&x,&t);
if(x==t) puts("1");
else if(a==1){
t=(t-x+p)%p;
if(t%gcd(b,p)) puts("-1");
else {
int inv=fast_pow(b,p-2,p);
printf("%lld\n",(t*inv+1==p)?p:(t*inv+1)%p);
}
}
else if(a==0){
if(b==t) puts("2");
else puts("-1");
}
else {
int val=b*fast_pow(a-1,p-2,p)%p;
int ans=bsgs(a,(t+val)*fast_pow(x+val,p-2,p)%p,p);
if(ans==-1) puts("-1");
else printf("%lld\n",ans+1);
}
}
return 0;
}
2、[CQOI2018]破解D-H协议
裸题。
\(Code\ Below:\)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int a,b,g,p;
int fast_pow(int a,int b){
int ret=1;
for(;b;b>>=1,a=a*a%p)
if(b&1) ret=ret*a%p;
return ret;
}
int bsgs(int a,int b){
map<int,int> mp;
mp.clear();
int i,j,val=b,t=sqrt(p)+1;
for(i=0;i<t;i++){
mp[val]=i;
val=val*a%p;
}
a=fast_pow(a,t);
val=1;
for(i=0;i<=t;i++){
j=(mp.find(val)==mp.end())?-1:mp[val];
if(j>=0&&i*t-j>=0) return i*t-j;
val=val*a%p;
}
return -1;
}
signed main()
{
int T;
scanf("%lld%lld%lld",&g,&p,&T);
while(T--){
scanf("%lld%lld",&a,&b);
printf("%lld\n",fast_pow(b,bsgs(g,a)));
}
return 0;
}
[学习笔记]BSGS的更多相关文章
- 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- OI知识点|NOIP考点|省选考点|教程与学习笔记合集
点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- 关于js的function.来自百度知道的回答,学习了.
在js中,创建一个函数对象的语法是var myFunction = new Function(arg1,…,agrN, body);其中,该函数对象的N个参数放在 函数主体参数body的前面,即函数主 ...
- 论Java的重要性
最近,最新的世界编程语言排名最近出炉了,Java位居世界第一. 不仅如此,Java以17.856%超过第二名C语言的8.726%两倍以上,其实,这一现象是十分反常的,因为,在前几年, ...
- 20155312 2016-2017-2 《Java程序设计》第七周学习总结
20155312 2016-2017-2 <Java程序设计>第七周学习总结 课堂内容总结 read()每次读入一个字节. eg:short2个字节,2=0x0201,读入后要0x < ...
- Java第2章笔记
1.什么是变量:在程序运行过程中它的值是允许改变的量 2.java中常用的数据类型分为四类八种 第一类:整型 int(整数类型) byte(字节类型) short(短整形) ...
- centos6 搭建nginx实现负载均衡
一.安装nginx 1)准备2台服务器,环境一样,同时执行 rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.r ...
- 关于redis,学会这9点就够了
一.redis是什么 redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存.事件发布或订阅.高速队列等场景.该数据库使用ANSI C语言编写,支持网络,提供字符串.哈希.列表.队 ...
- Cannot read property 'protocol' of undefined的原因和解决办法
Cannot read property 'protocol' of undefined 原因:axios请求中的错误 1.请求地址写错了 2.没有引入http.js 3.引入http.js的时候,单 ...
- Tensorflow RNN_LSTM实例
RNN的一种类型模型被称为长短期记忆网络(LSTM).我觉得这是一个有趣的名字.它听起来也意味着:短期模式长期不会被遗忘. LSTM的精确实现细节不在本文的范围之内.相信我,如果只学习LSTM模型会分 ...
- C++ —— 重载、覆盖和隐藏
一.重载 发生在同一个类当中,当在同一类当中定义了方法A,然后又定义了方法B,B和A的方法名相同,但是参数不同,那么再是称B重载了方法A. class test{ public: void A(); ...
- Django-配置、静态文件与路由
-----配置文件 1.BASE_DIR BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 2.DEBU ...