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.

<h4< dd="">Output

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

<h4< dd="">Sample Input

3
3 11
4 12
5 13

<h4< dd="">Sample Output

4
Not Exist
8

这题就是求乘法逆元我用的方法比较复杂,我是这么想的,先判断a和f是不是互质,如果互质才有乘法逆元,否则没有乘法逆元,费马小定理可以求出膜是素数的乘法逆元,欧拉定理可以求出膜是非素数的乘法逆元:具体方法:费马小定理,先要判断是不是素数,然后再用快速幂欧拉定理,先要写欧拉函数,然后再用快速幂,其中欧拉函数需要一个质数的数组isp所以用这种方法要写很多的函数,不过也好,昨天学的,正好好好的复习一下
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
typedef long long ll;
const int maxn=1e5;
int p[maxn];//素数筛
void init()
{for(int i=2;i<maxn;i++) p[i]=1;for(int i=2;i*i<maxn;i++){if(p[i]){for(int j=i*i;j<maxn;j+=i){p[j]=0;}}}
}
//v数组记录每一个i的最小质因数,isp记录所有的质数
int v[maxn],isp[maxn],m;
void init1()
{for(int i=2;i<maxn;i++){if(v[i]==0){isp[m++]=i;v[i]=i;}for(int j=0;j<m;j++){if(v[i]<isp[j]||i*isp[j]>maxn) break;v[i*isp[j]]=isp[j];}}
}int gcd(int a,int b)
{return b==0? a:gcd(b,a%b);
}
int euler(int n)
{int res=n;for(int i=0;i<m;i++){if(n%isp[i]==0){res=res*(isp[i]-1)/isp[i];}}return res;
}
int mod;
ll mod_pow(ll x,int n)
{ll ans=1;while(n){if(n & 1) ans=ans*x%mod;x=x*x%mod;n>>=1;}return ans;
}int main()
{int t;scanf("%d",&t);while(t--){int f;ll a;scanf("%I64d%d",&a,&f);init();init1();mod=f;int ans;if(gcd(a,f)==1){if(p[f])//费马小定理{ans=mod_pow(a,f-2);}else//欧拉定理{int exa=euler(f);ans=mod_pow(a,exa-1);}}else {printf("Not Exist\n");continue;}printf("%d\n",ans);}return 0;
}

  

转载于:https://www.cnblogs.com/EchoZQN/p/10290570.html

B - Modular Inverse相关推荐

  1. ZOJ 3609 Modular Inverse(扩展欧几里得)题解

    题意:求乘法逆元最小正正数解 思路:a*x≡1(mod m),则称x 是 a 关于 m 的乘法逆元,可以通过解a*x + m*y = 1解得x.那么通过EXGcd得到特解x1,最小正解x1 = x1 ...

  2. acm数论之欧几里得gcd

    1.欧几里得定理 同余定理的公式:(a+b)%mod=(a%mod+b%mod)%mod (a*b)%mod=(a%mod*b%mod)%mod 扩展欧几里得也有自己的一个公式:a*x+b*y=gcd ...

  3. tourist取模模板

    根据自己的喜好把求快速幂的方法名从 power(a,b) 改成了q_pow(a,b) 附带组合数的实现 (拿来吧你) template <typename T> T inverse(T a ...

  4. (组合数学)AtCoder Grand Contest 019 F - Yes or No

    F - Yes or No Time limit時間制限 : 2sec / Memory limitメモリ制限 : 256MB 配点 : 2000 点 問題文 あなたは N+M 問のマルバツクイズが出 ...

  5. 2019西电网安实验班选拔考试

    1.FirstBlood <div id="myInfo"class="reveal-modal" style="display: none;& ...

  6. ECC椭圆密码算法c语言实现,深入浅出椭圆加密算法ECC

    前言 同RSA(Ron Rivest,Adi Shamir,Len Adleman三位天才的名字)一样,ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)也属于公开 ...

  7. 密码学常用网站与解密脚本

    一.常见网站 ①okk密码等趣味解密网站 趣味密码解密 ②栅栏密码解密 典型混乱的密码时且给了数字对应–>即为栅栏密码 栅栏密码 ③典型的网站解密 ④16进制转字符串 ⑤base64解密 bas ...

  8. Bugku旧平台crypto writeup

    滴答~滴 摩尔斯电码加密 KEY{BKCTFMISC} 聪明的小羊 栅栏密码 2栏 KEY{sad23jjdsa2} Ok http://127.0.0.1/ook-master/ ook加密 fla ...

  9. Marvin is plain Jane WriteUp_实验吧_Crypto

    Marvin is plain Jane WriteUp 由于本人并没有做出来,因此本WP参考了文章: https://stratum0.org/blog/posts/2013/10/26/hack- ...

最新文章

  1. (原)Eclipse中将JNI生成的so打包成jar的步骤
  2. 联捷俞海乐:从技术leader到CEO视野和责任提升几个维度
  3. 高等数学上-赵立军-北京大学出版社-题解-练习5.6
  4. mysql 备份html数据_MySQL自动化生成HTML页面(导出数据)极限SQL编程-sql文件怎么打开...
  5. srtvlet filter
  6. 通过小程序给公众号传递消息_多输入现场消息传递应用程序概念
  7. 为旗下硬件产品服务,LG推出基于SLAM技术的3D摄像头
  8. 创建war类型的maven工程时报web.xml is missing and failOnMissingWebXml is set to true
  9. Java虚拟机-垃圾回收简介
  10. My.WinformMvc,一个 Winform MVC 框架
  11. eclipse的使用技巧
  12. 用C#创建Windows服务(Windows Services)并打包!
  13. Linux系统下zookeeper的安装和配置
  14. RTMP协议 和 HLS 协议
  15. 窃取式调度器(Stealing Scheduler)-高并发
  16. 微信开发——加密认证
  17. 电脑本机连了VPN 在虚拟机中没有连接 如何虚拟机共享主机VPN连接
  18. 怎样架设游戏服务器 怎样搭建一个属于自己的游戏服 5分钟学会游戏架设 3D手游搭建视频教程 自己做游戏GM
  19. 一文告诉你Java日期时间API到底有多烂
  20. 基于动力学模型的无人驾驶车辆MPC轨迹跟踪算法及carsim+matlab联合仿真学习笔记

热门文章

  1. mac redis 链接_在Ubunt/Mac系统安装Redis以及设置Redis密码并且允许远程连接 - Laravel学习网...
  2. 解决ajax获取不到按钮的id
  3. pat 团体赛练习题集 L2-008. 最长对称子串
  4. 用WidgeDuino创建一个SCADA(监控与数据採集)系统
  5. 【UNIX网络编程(二)】基本TCP套接字编程函数
  6. 字符编码相关知识总结
  7. 转载自csdn SQL SERVER 与ACCESS、EXCEL的数据转换
  8. 认识一下Global.asa 文件
  9. 敏捷个人教你如何制作2012生活看板
  10. 华为敏捷 DevOps 实践:产品经理如何开好敏捷回顾会议