zoukankan      html  css  js  c++  java
  • 同余方程

    【题目描述】

    现询问同余方程Ax ≡ 1(mod B)的最小正整数解是多少。

    【输入描述】

    输入两个正整数A、B。

    【输出描述】

    输出一个正整数,表示答案。

    【输入样例】

    3 10

    【输出样例】

    7

    【数据范围及提示】

    对于40%的数据,2 ≤ B ≤ 1000;

    对于60%的数据,2 ≤ B ≤ 50000000;

    对于100%的数据,2 ≤ A,B ≤ 2000000000。

    源代码:
    
    #include<cstdio>
    int A,B,X,Y;
    int GCD(int t1,int t2)
    {
        return t2?GCD(t2,t1%t2):t1;
    }
    void ExGCD(int t1,int t2) //裸扩展欧几里得。
    {
        if (!t2)
        {
            X=1;
            Y=0;
        }
        else
        {
            ExGCD(t2,t1%t2);
            int t=X;
            X=Y;
            Y=t-(t1/t2)*Y;
        }
    }
    int main()
    {
        scanf("%d%d",&A,&B);
        int D=GCD(A,B);
        A/=D;
        B/=D;
        ExGCD(A,B);
        while (X<=0)
          X+=B;
        printf("%d",X);
        return 0;
    }
    
    /*
        什么逆元老子不知道。
        Ax mod B=1 --> Ax-By=1 --> 扩展欧几里得求解最小x即可。
    */
  • 相关阅读:
    cz_health_day07
    cz_health_day06
    mysql索引底层原理
    cz_health_day05
    redis无法获取连接原因分析
    cz_health_day04
    cz_health_day03
    cz_health_day02
    cz_health_day01
    Spring学习
  • 原文地址:https://www.cnblogs.com/Ackermann/p/6053070.html
Copyright © 2011-2022 走看看