#include<bits/stdc++.h>
#define inf 1000000000
using namespace std;
typedef long long ll;
int gcd(int a,int b){return b==?a:gcd(b,a%b);}
void exgcd(int a,int b,int &x,int &y){
if(b==){x=;y=;return;}
exgcd(b,a%b,x,y);
int t=x;x=y;y=t-a/b*y;
}
int solve1(ll y,int z,int p){
y%=p;ll ans=;
for(int i=z;i;i>>=,y=y*y%p)if(i&)ans=ans*y%p;
return ans;
}
void solve2(ll y,int z,int p){
p=-p;int t=gcd(y,p);
if(z%t){puts("Orz, I cannot find x!");return;}
y/=t;z/=t;p/=t;int a,b;exgcd(y,p,a,b);
a=1LL*a*z%p;while(a<)a+=p;
printf("%d\n",a);
}
map<int,int>mp;
void solve3(int y,int z,int p){
y%=p;if(!y&&!z){puts("-1");return;}
if(!y){puts("Orz, I cannot find x!");return;}
mp.clear();
ll m=ceil(sqrt(p)),t=;
mp[]=m+;
for(ll i=;i<m;i++){t=t*y%p;if(!mp[t])mp[t]=i;}
ll tmp=solve1(y,p-m-,p),ine=;
for(ll k=;k<m;k++){
int i=mp[z*ine%p];
if(i){
if(i==m+)i=;
printf("%lld\n",k*m+i);return;
}
ine=ine*tmp%p;
}
puts("Orz, I cannot find x!");
}
inline int read(){
int f=,x=;char ch;
do{ch=getchar();if(ch=='-')f=-;}while(ch<''||ch>'');
do{x=x*+ch-'';ch=getchar();}while(ch>=''&&ch<='');
return f*x;
}
int main(){
int T=read(),k=read();
while(T--){
int y=read(),z=read(),p=read();
if(k==)printf("%d\n",solve1(y,z,p));
else if(k==)solve2(y,z,p);
else solve3(y,z,p);
}
return ;
}

奇奇怪怪的bsgs裸题。

不知道啥是bsgs的可以百度。

别名 拔山盖世算法,百事公司算法等。

【bzoj2242】计算器的更多相关文章

  1. BZOJ-2242 计算器 快速幂+拓展欧几里得+BSGS(数论三合一)

    污污污污 2242: [SDOI2011]计算器 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 2312 Solved: 917 [Submit][S ...

  2. bzoj2242 计算器

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

  3. 【BZOJ2242】计算器(BSGS,快速幂)

    [BZOJ2242]计算器(BSGS,快速幂) 题面 BZOJ 洛谷 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给 ...

  4. 【BZOJ2242】[SDOI2011]计算器 BSGS

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

  5. 【bzoj2242】: [SDOI2011]计算器 数论-快速幂-扩展欧几里得-BSGS

    [bzoj2242]: [SDOI2011]计算器 1.快速幂 2.扩展欧几里得(费马小定理) 3.BSGS /* http://www.cnblogs.com/karl07/ */ #include ...

  6. [bzoj2242][Sdoi2011]计算器_exgcd_BSGS

    计算器 bzoj-2242 Sdoi-2011 题目大意:裸题,支持快速幂.扩展gcd.拔山盖世 注释:所有数据保证int,10组数据. 想法:裸题,就是注意一下exgcd别敲错... ... 最后, ...

  7. BZOJ2242 [SDOI2011]计算器

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  8. 【bzoj2242】 SDOI2011—计算器

    http://www.lydsy.com/JudgeOnline/problem.php?id=2242 (题目链接) 题意 给出y,z,p.求:1.yz mod p:2.xy=z(mod p):3. ...

  9. 【BZOJ2242】【SDoi2011】计算器 快速幂+EXGCD+BSGS

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

  10. 【BZOJ2242】【SDOI2011】计算器

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

随机推荐

  1. 学习人工智能的第六个月[深度学习[Deep Learning,DL]]

    这个月阅读了论文[Partial Adversarial Domain Adaptation-eccv18],文章着眼于源域标签空间包含目标域标签空间的场景,在域对抗神经网络的基础上提出了部分对抗域适 ...

  2. centos7.4内核从3.10升级到4.14详细步骤

    由于我们的docker学习中的Overlay需要内核版本在3.12+,所以在安装完centos7.4之后要进行内核升级,下面是升级步骤:1.导入keyrpm --import https://www. ...

  3. 匿名内存 | shm

    page_is_file_cache是和swapbacked互斥的,所以说对于匿名页来说,分配的时候就就会把PageSwapBacked给设置上,page->mapping_address = ...

  4. API文档打开显示'已取消到该网页的导航'的解决方法

    从网上下载的API,点击目录右边显示框显示“已取消到该网页的导航”.出现这样的问题并不是文档本身的问题,而是文档属性设置的问题. 这时候只要右键文件选择“属性”-在打开的界面中点击“解除锁定”-点击” ...

  5. 附录A培训实习生-面向对象基础构造方法和带参数的构造方法(2)

    构造方法,又叫构造函数,其实就是对类进行实例化.构造方法与类同名,无返回值,也不需要void,在new时候调用.也就是说,就是调用构造方法的时候. 所有类都有构造方法,如果你不编码则系统默认生成空的的 ...

  6. IIS 发布后无法连接数据库(应用池问题)

    查找网站对应的  应用池,修改为 .net4.0  然后设置启动32位应用程序为 True

  7. [APIO2018] New Home

    题面在这里 description 在一个数轴上: 给定\(n\)个商店,每个商店有一个开业时间,关门时间,坐标和销售物品的种类 同时有\(m\)个询问,每个询问给你一个时间\(t[i]\)和地点\( ...

  8. [洛谷P1131][ZJOI2007]时态同步

    题目大意:给你一棵树,每条边有边权,要求增加一些边的边权,使得根节点到每个叶子节点的距离相等,求出最少共增加多少边权. 题解:树形$DP$,对于每个点,如果它到它的子树中的叶子节点距离不同,一定要在这 ...

  9. [Leetcode] Linked list cycle ii 判断链表是否有环

    Given a linked list, return the node where the cycle begins. If there is no cycle, returnnull. Follo ...

  10. 【luogu 1439 最长公共子序列】

    题目描述 给出1-n的两个排列P1和P2,求它们的最长公共子序列. 输入输出格式 输入格式: 第一行是一个数n, 接下来两行,每行为n个数,为自然数1-n的一个排列. 输出格式: 一个数,即最长公共子 ...