zoukankan      html  css  js  c++  java
  • ZOJ 3609 Modular Inverse(扩展欧几里德)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4712


    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

    3
    3 11
    4 12
    5 13
    

    Sample Output

    4
    Not Exist
    8
    

    References


    代码例如以下:

    #include <cstdio>
    #include <cstring>
    #include <cmath>
    typedef long long LL;
    
    LL exgcd(LL a,LL b,LL &x,LL &y)
    {
        if(b == 0)
        {
            x = 1;
            y = 0;
            return a;
        }
        else
        {
            LL r = exgcd(b,a%b,x,y);
            LL t = x;
            x = y;
            y = t-a/b*y;
            return r;
        }
    }
    
    LL cal(LL a, LL b, LL c)
    {
        LL x, y;
        LL tt = exgcd(a, b, x, y);
        if(c%tt)//无整数解
        {
            return -1;
        }
        x*=c/tt;
        b/=tt;
        if(b<0)
            b=-b;
        LL ans=x%b;
        if(ans<=0)
            ans+=b;
        return ans;
    }
    
    int main()
    {
        LL a, b, t;
        scanf("%lld",&t);
        while(t--)
        {
            scanf("%lld%lld",&a,&b);
            LL ans = cal(a, b, 1);
            if(ans == -1)
            {
                printf("Not Exist
    ");
                continue;
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
    



  • 相关阅读:
    SQL Server
    SQL Server
    SQL Server
    SQL Server
    SQL Server
    SQL Server
    SQL Server
    ssh保持连接不断开
    如何查看linux是否打开虚拟化
    dd命令详解
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7221231.html
Copyright © 2011-2022 走看看