bzoj2242: [SDOI2011]计算器
模版大杂烩系列
第一问是快速幂
第二问拓展欧几里得
第三问BSGS
#include<cstdio> #include<iostream> #include<cstring> #include<cstdlib> #include<algorithm> #include<cmath> #include<map> using namespace std; typedef long long LL;LL quick_pow(LL A,LL p,LL mod) {LL ret=1;while(p!=0){if(p%2==1)ret=(ret*A)%mod;A=(A*A)%mod;p/=2;}return ret; } void solve1(int T) {while(T--){LL y,z,p;scanf("%lld%lld%lld",&y,&z,&p);printf("%lld\n",quick_pow(y,z,p));} }//-------------------------------------- LL exgcd(LL a,LL b,LL &x,LL &y) {if(a==0){x=0,y=1;return b;}else{LL tx,ty;LL d=exgcd(b%a,a,tx,ty);x=ty-b/a*tx;y=tx;return d;} } void solve2(int T) {while(T--){LL yy,z,p;scanf("%lld%lld%lld",&yy,&z,&p);LL A=yy,B=p,K=z,x,y;LL d=exgcd(A,B,x,y);if(K%d!=0)printf("Orz, I cannot find x!\n");else{x=(x*(K/d)%(B/d)+(B/d))%(B/d);printf("%lld\n",x);}} }//---------------------------------------- map<LL,LL>Hash; LL BSGS(LL a,LL b,LL mod) {Hash.clear();b%=mod;LL t=(LL(sqrt(double(mod+1)))),k=1;for(int j=0;j<t;j++){Hash[b*k%mod]=j;//b*a^jk=(k*a)%mod;}a=quick_pow(a,t,mod);//a^tif(a==0)return b==0?1:-1;else{LL k=1;for(int i=0;i<=t;i++){if(Hash.find(k)!=Hash.end()){LL j=Hash[k];if(t*i-j>=0)return t*i-j;}k=(k*a)%mod;}return -1;} } void solve3(int T) {while(T--){LL y,z,p;scanf("%lld%lld%lld",&y,&z,&p);if(y%p==0)printf("Orz, I cannot find x!\n");else{LL d=BSGS(y,z,p);if(d==-1)printf("Orz, I cannot find x!\n");else printf("%lld\n",d);} } }int main() {int T,K;scanf("%d%d",&T,&K);if(K==1)solve1(T);else if(K==2)solve2(T);else if(K==3)solve3(T);return 0; }
转载于:https://www.cnblogs.com/AKCqhzdy/p/9322418.html
bzoj2242: [SDOI2011]计算器相关推荐
- [bzoj2242] [SDOI2011]计算器
#570. [bzoj2242] [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ ...
- [bzoj2242][SDOI2011]计算器
题目大意:三合一,给你$y,z,p$,求$x$,三种询问 $y^z\bmod{p}$ $xy\equiv z\pmod p$的最小非负整数 $y^z\equiv z\pmod p$的最小非负整数 题解 ...
- bzoj2242 [SDOI2011]计算器 exgcd+ksm+bsgs
三个板子,注意bsgs的时候要特判无解,即a%p==0||b%p==0(bsgs还是很巧妙的..) 码: #include<iostream> #include<cstdio> ...
- BZOJ 2242([SDOI2011]计算器-Baby Step Giant Step第1题)
2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 744 Solved: 289 [Submit][Statu ...
- BZOJ 2242: [SDOI2011]计算器 [快速幂 BSGS]
2242: [SDOI2011]计算器 题意:求\(a^b \mod p,\ ax \equiv b \mod p,\ a^x \equiv b \mod p\),p是质数 这种裸题我竟然WA了好多次 ...
- 【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...
- 【codevs1565】【BZOJ2242】计算器,数论练习
计算器 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算 ...
- luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法
BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...
- [SDOI2011] 计算器
题目链接:戳我 三合一?? 第一问是..快速幂. 第二问求逆元.最后乘上z即可. 第三问bsgs模板了. bsgs不会?戳我 代码如下: #include<cstdio> #include ...
- [SDOI2011]计算器 BSGS
前两个操作都看出来做法了,第三个要用到BSGS这个算法 BSGS主要可以解 a^x=b(mod n)的 0<=x<n 的解 暂时先拿kb和hzwer的板子当黑盒吧..数论细节短时间内没有学 ...
最新文章
- POJ3270 Cow Sorting ——置换群
- 文件操作工具类FileUtil
- 手机号码归属地及运营商查询
- docker compose详解
- 1106 Lowest Price in Supply Chain(25 分)
- 安装Apache配置虚拟目录
- ATK-ESP8266 串口转WIFI模块 简历
- 点击 tomcat9.exe闪退 问题的解决方法
- 心率传感器MAX30102使用
- 两相四线步进电机C语言程序,两相四线步进电机时序
- centos7安装有道词典
- 再深一点:如何给女朋友解释什么是微服务?
- 非常有用的制作logo的网站
- 计算机科学学现代,现代计算机科学的鼻祖
- Matlab图形窗口大小的控制 ,plot窗口大小,figure大小,axis设置,实用
- 第83节:Java中的学生管理系统分页功能
- k8s使用的iptables,具体原理是什么?一学就会
- OSPF/2/NBRCHG:The status of the non-virtual neighbor changes.
- restapi是什么意思_网上整理的对于Rest和Restful api的理解
- Javaweb的服务器有哪些
热门文章
- 计算机音乐组获奖作品,大学生计算机音乐创作类决赛揭晓 浙音6件作品均获奖...
- 凌阳单片机c语言延时函数,凌阳单片机C语言(网站整理).doc
- vue项目基本环境的配置与初始化
- Mysql 存储过程、存储函数 与 递归查询
- 阶段3 1.Mybatis_08.动态SQL_02.mybatis中动态sql语句-where标签的使用
- postgresql 模式与用户,及跨库访问
- MySQL连接localhost失败
- 使用mptt在easyui中显示树形结构
- 【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)
- DataTable的Select方法