博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Modular Inverse(模逆元,扩展欧几里德)
阅读量:6278 次
发布时间:2019-06-22

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

Modular Inverse

Time Limit: 2 Seconds     
Memory Limit: 65536 KB

The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1x (mod m). This is equivalent to ax≡1 (mod m).

Input

There are multiple test cases. The first line of input is an integer T ≈ 2000 indicating the number of test cases.

Each test case contains two integers 0 < a ≤ 1000 and 0 < m ≤ 1000.

Output

For each test case, output the smallest positive x. If such x doesn't exist, output "Not Exist".

Sample Input

33 114 125 13

Sample Output

4Not Exist8 题解:求最小正整数解,其实吧,x的通解是x0+b/gcd*t,由于t是整数,那么ans=x0+b/gcd*t=x0 mod b=x0%b;因为ans要是正整数的, 所以当b/gcd是负的时候,就等于绝对值就好了,因为还有t啊,当x0%b负时,加上一个b;就妥了;因为ans=(x0+b)%b; 代码:
1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int INF=0x3f3f3f3f; 8 typedef long long LL; 9 void e_gcd(LL a,LL b,LL &d,LL &x,LL &y){10 if(!b){11 d=a;12 x=1;13 y=0;14 }15 else{16 e_gcd(b,a%b,d,x,y);17 LL temp=x;18 x=y;19 y=temp-a/b*y;20 }21 }22 LL cal(int a,int b,int c){23 LL x,y,d;24 e_gcd(a,b,d,x,y);25 if(c%d!=0)return -1;//ax+by=c/(c/gcd);26 x*=c/d;27 b/=d;//因为x的通解是x0+(b/gcd)t; 28 if(b<0)b=-b;29 LL ans=x%b;30 if(ans<=0)ans+=b;31 return ans;32 }33 int main(){34 LL T,a,b,d,x,y;35 scanf("%d",&T);36 while(T--){37 scanf("%lld%lld",&a,&b);38 LL ans=cal(a,b,1);39 if(ans==-1)puts("Not Exist");40 else printf("%lld\n",ans);41 }42 return 0;43 }

 题上数据比较水,数据范围1000,暴力一下就可以了:

#include
#include
#include
#include
#include
using namespace std;const int INF=0x3f3f3f3f;typedef long long LL;int main(){ int T,a,m; scanf("%d",&T); while(T--){
//(1-ax)%m; scanf("%d%d",&a,&m); int flot=0; for(int x=1;x<=1000;x++){ if((1-a*x)%m==0){ flot=1; printf("%d\n",x); break; } } if(flot)continue; puts("Not Exist"); } return 0;}

 

转载地址:http://mvnva.baihongyu.com/

你可能感兴趣的文章
Serverless五大优势,成本和规模不是最重要的,这点才是
查看>>
Nginx 极简入门教程!
查看>>
iOS BLE 开发小记[4] 如何实现 CoreBluetooth 后台运行模式
查看>>
Item 23 不要在代码中使用新的原生态类型(raw type)
查看>>
为网页添加留言功能
查看>>
JavaScript—数组(17)
查看>>
Android 密钥保护和 C/S 网络传输安全理论指南
查看>>
以太坊ERC20代币合约优化版
查看>>
Why I Began
查看>>
同一台电脑上Windows 7和Ubuntu 14.04的CPU温度和GPU温度对比
查看>>
js数组的操作
查看>>
springmvc Could not write content: No serializer
查看>>
Python系语言发展综述
查看>>
新手 开博
查看>>
借助开源工具高效完成Java应用的运行分析
查看>>
163 yum
查看>>
第三章:Shiro的配置——深入浅出学Shiro细粒度权限开发框架
查看>>
80后创业的经验谈(转,朴实但实用!推荐)
查看>>
让Windows图片查看器和windows资源管理器显示WebP格式
查看>>
我的友情链接
查看>>