\(\%\%\% 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的更多相关文章

  1. 数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)

    注:转载本文须标明出处. 原文链接https://www.cnblogs.com/zhouzhendong/p/Number-theory.html 数论算法 剩余系相关 学习笔记 (基础回顾,(ex ...

  2. OI数学 简单学习笔记

    基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...

  3. OI知识点|NOIP考点|省选考点|教程与学习笔记合集

    点亮技能树行动-- 本篇blog按照分类将网上写的OI知识点归纳了一下,然后会附上蒟蒻我的学习笔记或者是我认为写的不错的专题博客qwqwqwq(好吧,其实已经咕咕咕了...) 基础算法 贪心 枚举 分 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. SpringBoot中关于@Enable***的注解详解

    出处:http://blog.csdn.net/qq_26525215 @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 & ...

  2. spring学习九 spring aop详解

    本文来自于:https://www.cnblogs.com/jingzhishen/p/4980551.html AOP(Aspect-Oriented Programming,面向方面编程),可以说 ...

  3. 如何使用GCC生成动态库和静态库

    根据链接时期的不同,库又有静态库和动态库之分.静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行.而动态库是在程序执行的时候被链接的.程序执行完,库仍需 ...

  4. Django高级篇一RESTful架构及API设计

    一.什么是RESTful架构? 通过互联网通信,建立在分布式体系上"客户端/服务器模式”的互联网软件,具有高并发和高延时的特点. 简单的来说,就是用开发软件的模式开发网站.网站开发,完全可以 ...

  5. 27 isinstance与issubclass、反射、内置方法

    isinstance与issubclass issubclass:判断子类是否属于父类,是则返回True,否则返回False isinstance:判断对象是否属于类,是则返回True,否则返回Fal ...

  6. servlet中请求转发获取数据等,,,

    String uname= req.getParameter("uname");  获取请求的字符串 req.setAttribute("str"," ...

  7. mysql之数据库的介绍和基本的增删改查

    一 学前知识 什么叫做静态页面:用户传入内容后,不能处理用户的请求,只能单纯的显示主页面的信息. 什么是负载均衡:通过计算服务器的性能,将客户发送过来的请求指派给某台服务器.一般还要有一个备份的负载均 ...

  8. 2019.01.09 bzoj2599: [IOI2011]Race(点分治)

    传送门 题意:给一棵树,每条边有权.求一条路径,权值和等于K,且边的数量最小. 思路: 考虑点分治如何合并. 我们利用树形dpdpdp求树的直径的方法,边dfsdfsdfs子树边统计答案即可. 代码: ...

  9. 在运行bat文件时,报错发生系统错误123,文件名,目录名或卷标语法不正确

    报错:发生系统错误123,文件名,目录名或卷标语法不正确 这个错误就相当于你在dos命令行中输入一个命令,报错“不是内部或外部命令,也不是可运行的程序”.此时你可以在系统环境变量中检查是否配置了这个命 ...

  10. dj 分页器组件

    django内置的分页器组件,能够帮我们实现对查询的数据进行自动分页,并返回分页对象 from django.core.paginator import Paginator, EmptyPage Pa ...