模版大杂烩系列

第一问是快速幂

第二问拓展欧几里得

第三问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]计算器相关推荐

  1. [bzoj2242] [SDOI2011]计算器

    #570. [bzoj2242] [SDOI2011]计算器 题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ ...

  2. [bzoj2242][SDOI2011]计算器

    题目大意:三合一,给你$y,z,p$,求$x$,三种询问 $y^z\bmod{p}$ $xy\equiv z\pmod p$的最小非负整数 $y^z\equiv z\pmod p$的最小非负整数 题解 ...

  3. bzoj2242 [SDOI2011]计算器 exgcd+ksm+bsgs

    三个板子,注意bsgs的时候要特判无解,即a%p==0||b%p==0(bsgs还是很巧妙的..) 码: #include<iostream> #include<cstdio> ...

  4. BZOJ 2242([SDOI2011]计算器-Baby Step Giant Step第1题)

    2242: [SDOI2011]计算器 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 744  Solved: 289 [Submit][Statu ...

  5. BZOJ 2242: [SDOI2011]计算器 [快速幂 BSGS]

    2242: [SDOI2011]计算器 题意:求\(a^b \mod p,\ ax \equiv b \mod p,\ a^x \equiv b \mod p\),p是质数 这种裸题我竟然WA了好多次 ...

  6. 【bzoj2242】[SDOI2011]计算器 EXgcd+BSGS

    题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...

  7. 【codevs1565】【BZOJ2242】计算器,数论练习

    计算器 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 题目描述 Description 你被要求设计一个计算器完成以下三项任务: 1.给定y.z.p,计算 ...

  8. luogu2485 [SDOI2011]计算器 poj3243 Clever Y BSGS算法

    BSGS 算法,即 Baby Step,Giant Step 算法.拔山盖世算法. 计算 \(a^x \equiv b \pmod p\). \(p\)为质数时 特判掉 \(a,p\) 不互质的情况. ...

  9. [SDOI2011] 计算器

    题目链接:戳我 三合一?? 第一问是..快速幂. 第二问求逆元.最后乘上z即可. 第三问bsgs模板了. bsgs不会?戳我 代码如下: #include<cstdio> #include ...

  10. [SDOI2011]计算器 BSGS

    前两个操作都看出来做法了,第三个要用到BSGS这个算法 BSGS主要可以解 a^x=b(mod n)的 0<=x<n 的解 暂时先拿kb和hzwer的板子当黑盒吧..数论细节短时间内没有学 ...

最新文章

  1. POJ3270 Cow Sorting ——置换群
  2. 文件操作工具类FileUtil
  3. 手机号码归属地及运营商查询
  4. docker compose详解
  5. 1106 Lowest Price in Supply Chain(25 分)
  6. 安装Apache配置虚拟目录
  7. ATK-ESP8266 串口转WIFI模块 简历
  8. 点击 tomcat9.exe闪退 问题的解决方法
  9. 心率传感器MAX30102使用
  10. 两相四线步进电机C语言程序,两相四线步进电机时序
  11. centos7安装有道词典
  12. 再深一点:如何给女朋友解释什么是微服务?
  13. 非常有用的制作logo的网站
  14. 计算机科学学现代,现代计算机科学的鼻祖
  15. Matlab图形窗口大小的控制 ,plot窗口大小,figure大小,axis设置,实用
  16. 第83节:Java中的学生管理系统分页功能
  17. k8s使用的iptables,具体原理是什么?一学就会
  18. OSPF/2/NBRCHG:The status of the non-virtual neighbor changes.
  19. restapi是什么意思_网上整理的对于Rest和Restful api的理解
  20. Javaweb的服务器有哪些

热门文章

  1. 计算机音乐组获奖作品,大学生计算机音乐创作类决赛揭晓 浙音6件作品均获奖...
  2. 凌阳单片机c语言延时函数,凌阳单片机C语言(网站整理).doc
  3. vue项目基本环境的配置与初始化
  4. Mysql 存储过程、存储函数 与 递归查询
  5. 阶段3 1.Mybatis_08.动态SQL_02.mybatis中动态sql语句-where标签的使用
  6. postgresql 模式与用户,及跨库访问
  7. MySQL连接localhost失败
  8. 使用mptt在easyui中显示树形结构
  9. 【bzoj 1087】[SCOI2005]互不侵犯King(状压dp)
  10. DataTable的Select方法