博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
51nod1256乘法逆元
阅读量:4956 次
发布时间:2019-06-12

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

1256 乘法逆元

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注

给出2个数M和N(M < N),且M与N互质,找出一个数K满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
Input
输入2个数M, N中间用空格分隔(1 <= M < N <= 10^9)
OutPut
输出一个数K,满足0 < K < N且K * M % N = 1,如果有多个满足条件的,输出最小的。
Input示例
2 3
Output示例

2

思路:K * M % N = 1等价于 K*M=N*X+1  即 K*M+N*(-X)=1 

根据扩展欧几里德算法,求出K和(-X);

而K是应为正整数,即需要若K为负整数,则需要将之化正,即与负数取模同理,将K加上N,直至K>0为止,所得的数即为最小的乘法逆元;

若K为正整数,则直接输出即可

#include
int exgcd(int a,int b,int &x,int &y){ if(b==0) { x=1; y=0; return a; } int r=exgcd(b,a%b,x,y); int t=x;x=y;y=t-(a/b)*y; return r;}int main(){ int n,m,x,y; while(~scanf("%d%d",&m,&n)){ exgcd(m,n,x,y); while(x<0) x+=n; printf("%d\n",x); }}

参考博客:http://blog.csdn.net/qq_16830983/article/details/44889333

转载于:https://www.cnblogs.com/OMG-By/p/5374528.html

你可能感兴趣的文章
内存系列一:快速读懂内存条标签
查看>>
PHP的重载-使用魔术方法实现
查看>>
java内部类的四大作用
查看>>
RESTful支持
查看>>
c++&c之参数传递
查看>>
使用宏的一点心得
查看>>
bzoj1799: [Ahoi2009]self 同类分布
查看>>
20145205 《信息安全系统设计基础》第5周学习总结
查看>>
c++程序书写原则
查看>>
Unity For Android Cardboard App ( 1 ):基础入门
查看>>
用R语言进行文本挖掘和主题建模
查看>>
ajax全能分页
查看>>
asp.net上传图片自动生成缩略图功能代码
查看>>
图解MBR分区无损转换GPT分区+UEFI引导安装WIN8.1 分类: ...
查看>>
css常见问题解决方法
查看>>
数组和字符串的方法
查看>>
Follow somebody
查看>>
Linux下Eclipse配置安装 PyDev(Pydev插件一直不能成功,安装这个插件失败的问题)...
查看>>
java.lang.IllegalArgumentException: Requested window android.os.BinderProxy@450b2f48 异常处理
查看>>
Invalid code signing entitlements. Your application bundle's signature contains
查看>>