博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【BZOJ2242】【SDoi2011】计算器 快速幂+EXGCD+BSGS
阅读量:5077 次
发布时间:2019-06-12

本文共 1917 字,大约阅读时间需要 6 分钟。

Description

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

Input

 输入包含多组数据。

第一行包含两个正整数T,K分别表示数据组数和询问类型(对于一个测试点内的所有数据,询问类型相同)。
以下行每行包含三个正整数y,z,p,描述一个询问。

Output

对于每个询问,输出一行答案。对于询问类型2和3,如果不存在满足条件的,则输出“Orz, I cannot find x!”,注意逗号与“I”之间有一个空格。

Sample Input

【样例输入1】
3 1
2 1 3
2 2 3
2 3 3
【样例输入2】
3 2
2 1 3
2 2 3
2 3 3
【数据规模和约定】
对于100%的数据,1<=y,z,p<=10^9,为质数,1<=T<=10。

Sample Output

【样例输出1】
2
1
2
【样例输出2】
2
1
0

HINT

 

Source

Solution:第一问快速幂
      第二问EXGCD
      第三问BSGS
BSGS(Baby Step Giant Step)网上介绍的很详细了,但是我令x=im-j这样就不用求逆元辣,相应的为了不出现负数是i从1开始到m枚举,则j从1到m枚举,因为可以等于m,j就不需要从0开始啦.。
另:一开始在CV上测,用了puts试试,忘了自带换行在CV上过了,然而在BZOJ PE了233
1   2 #include 
3 #include
4 #include
5 #include
6 #define ll long long 7 using namespace std; 8 ll y,z,p; 9 10 ll fast_pow(ll y,ll z,ll p)11 {12 ll ans=1;13 while (z)14 {15 if (z&1) ans=ans*y%p;16 y=y*y%p;17 z>>=1;18 }19 return ans;20 }21 22 ll gcd(ll a,ll b)23 {
return b==0?a:gcd(b,a%b);}24 25 void ex_gcd(ll a,ll b,ll &x,ll &y)26 {27 if (!b) {x=1;y=0;return;}28 ex_gcd(b,a%b,x,y);29 ll t=x; x=y; y=t-a/b*y; 30 }31 32 void solve1()33 {34 printf("%lld\n",fast_pow(y,z,p));35 }36 37 void solve2()38 {39 ll d=gcd(y,p);40 if (z%d) {printf("Orz, I cannot find x!\n");return;}41 y/=d; z/=d;42 ll a,b;43 ex_gcd(y,p,a,b);44 a=a*z%p;45 while (a<0) a+=p;46 printf("%lld\n",a);47 }48 49 void solve3()50 {51 y%=p,z%=p;52 if (!y && !z) {puts("1"); return;}53 if (!y) {printf("Orz, I cannot find x!\n");return;}54 map
mp;55 mp.clear();56 ll m=ceil(sqrt(p));57 ll t=fast_pow(y,m,p),k=z%p;//直接m即可 58 for (int i=0;i
View Code

 

转载于:https://www.cnblogs.com/DMoon/p/5225450.html

你可能感兴趣的文章
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>