【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)
题目描述非常直接,要求你用快速幂解决第一问,exgcd解决第二问,bsgs解决第三问。
emmmm于是现学bsgs
第二问让求最小整数解好烦啊……
假设我们要求得方程$ax+by=c(mod p)$的最小整数解
令$d=gcd(a,b)$
我们求得一个解$x_0,y_0$使得$ax_0+by_0=d(mod p)$
然后$x_0*frac{c}{d}$为最小整数解。
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cctype>
#include<cstring>
#include<cmath>
#include<map>
using namespace std;
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long Pow(long long a,long long b,long long c){
long long ret=;
while(b){
if(b&) ret=(ret*a)%c;
a=(a*a)%c;
b>>=;
}
return ret;
} long long exgcd(long long a,long long b,long long &x,long long &y){
if(b==){
x=;y=;
return a;
}
long long tmp=exgcd(b,a%b,x,y);
long long ret=x;x=y;y=ret-a/b*y;
return tmp;
} int main(){
int n=read(),m=read();
while(n--){
int y=read(),z=read(),p=read();
if(m==) printf("%lld\n",Pow(y,z,p));
else if(m==){
long long x,b;
long long now=exgcd(y,p,x,b);
if(z%now){
printf("Orz, I cannot find x!\n");
continue;
}
x/=now;
//exgcd(y/now,p/now,x,b);
x=(x+p/now)%(p/now);
printf("%lld\n",x*(z/now)%(p/now));
}
else{
if(y%p==){
printf("Orz, I cannot find x!\n");
continue;
}
map<long long,int>d;
long long m=ceil(sqrt(p));
for(int i=;i<=m;++i) d[Pow(y,i,p)*z%p]=i;
long long t=Pow(y,m,p);
long long ans=; bool flag=;
for(int i=;i<=m;++i){
ans=ans*t%p;
if(d.count(ans)){
long long ret=i*m%p-d[ans]%p;
printf("%lld\n",(ret%p+p)%p);
flag=; break;
}
}
if(flag==) printf("Orz, I cannot find x!\n");
}
}
return ;
}
【Luogu】P2485计算器(快速幂,exgcd和Bsgs模板)的更多相关文章
- 【BZOJ2242】【SDoi2011】计算器 快速幂+EXGCD+BSGS
Description 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给 ...
- BZOJ 2242: [SDOI2011]计算器( 快速幂 + 扩展欧几里德 + BSGS )
没什么好说的... --------------------------------------------------------------------- #include<cstdio&g ...
- BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS
BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS 题意: 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p, ...
- BZOJ 2242 [SDOI2011]计算器(快速幂+Exgcd+BSGS)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2242 [题目大意] 给出T和K 对于K=1,计算 Y^Z Mod P 的值 对于K=2 ...
- BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)
污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...
- bzoj 2242 [SDOI2011]计算器 快速幂+扩展欧几里得+BSGS
1:快速幂 2:exgcd 3:exbsgs,题里说是素数,但我打的普通bsgs就wa,exbsgs就A了...... (map就是慢)..... #include<cstdio> # ...
- 2018.08.30 NOIP模拟 kfib(矩阵快速幂+exgcd)
[输入] 一行两个整数 n P [输出] 从小到大输出可能的 k,若不存在,输出 None [样例输入 1] 5 5 [样例输出] 2 [样例解释] f[0] = 2 f[1] = 2 f[2] = ...
- 【luogu P3390 矩阵快速幂】 模板
题目链接:https://www.luogu.org/problemnew/show/P3390 首先要明白矩阵乘法是什么 对于矩阵A m*p 与 B p*n 的矩阵 得到C m*n 的矩阵 矩阵 ...
- (分治法 快速幂)P1226 【模板】快速幂||取余运算 洛谷
题目描述 输入b,p,k的值,求b^p mod k的值.其中b,p,k*k为长整型数. 输入输出格式 输入格式: 三个整数b,p,k. 输出格式: 输出“b^p mod k=s” s为运算结果 输入输 ...
随机推荐
- find - 递归地在层次目录中处理文件
总览 SYNOPSIS find [path...] [expression] 描述 DESCRIPTION 这个文档是GNU版本 find 命令的使用手册. find 搜索目录树上的每一个文件名,它 ...
- python_70_内置函数2
#hex() 转16进制 oct()转8进制 print(hex(255)) print(oct(10)) #id() 返回内存地址 print(id('a')) ''' isinstance(obj ...
- 解决mysql8小时无连接自动断掉机制
windows下打开my.ini,增加: interactive_timeout=28800000 wait_timeout=28800000 MySQL是一个小型关系型数据库管理系统,由于MySQL ...
- 纯js实现淘宝商城轮播图
需求: 循环无缝自动轮播3张图片,点击左右箭头可以手动切换图片,鼠标点击轮播图下面的小圆点会跳转到对应的第几张图片.鼠标放到轮播图的图片上时不再自动轮播,鼠标移开之后又继续轮播.效果图: 下面是htm ...
- Javascript笔记部分
写入HTML输出 document.write(“<h1>”); 改变HTML内容 x = document.getElementById(“demo”) //查找元素 后面可以.valu ...
- C# StreamWriter对像
用FileWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件中,它处理重要的转换和向FileStream对像写入工作.创建StreamWriter有很多方法: ...
- AngularJS1.X版本双向绑定九问
前言 由于工作的原因,使用angular1.x版本已经有一段时间了,虽然angualr2升级后就完全重构了,但每个版本存在也有一定的道理.话不多说,进入正题. 1.双向绑定的原理是什么? Angual ...
- Centos7 PHP的安装和配置
前面Nginx和httpd的安装都是为了支持PHP而弄的,然后这个目标就给了我一沉重的打击,等我慢慢道来,先来说说PHP的安装和配置吧. 一.PHP的安装 1.由于linux的yum源不存在php7. ...
- Freemaker基于word模板动态导出压缩文件汇总整理
Freemaker基于word模板动态导出压缩文件汇总整理 Freemaker基于word模板动态导出单个文件思路和代码详情见连接: https://www.cnblogs.com/lsy-blogs ...
- Nodejs NPM CNPM优雅安装install
由于npm和cnpm都能安装组件,安装的组件有的保存在c盘用户目录的Appdata隐藏目录下,有的保存在安装node的目录下,而且安装在c盘的话,重装系统又得重新部署,甚是麻烦,所以这里提供优雅安装的 ...