zoukankan      html  css  js  c++  java
  • 51nod1256乘法逆元

    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<stdio.h>
    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
    ",x);
        }
    }

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

  • 相关阅读:
    红黑树(RBTree)
    js闭包简要分析
    html 5的localstorag
    浅析CSS中的haslayout
    初识sass框架
    BFC块级格式化上下文简述
    RESTful互联网框架
    javascript的框架演化
    浅析angular框架的cookie
    angular template浅析
  • 原文地址:https://www.cnblogs.com/OMG-By/p/5374528.html
Copyright © 2011-2022 走看看