1 条题解

  • 1
    @ 2020-06-12 21:08:07

    辣鸡出题人来一发题解:

    这题实际上是求逆元

    原式的实质是:

    \( ax + by = 1 \)

    这里的 \(y\) 是辅助变量。

    然后这就是标准的 exgcd 了, exgcd 的求法不再赘述,自行了解

    #include<bits/stdc++.h>
    using namespace std;
    long long x,y;
    long long gcd(long long a,long long b){
        if(b==0)
        return a;
        return gcd(b,a%b);
    }
    void exgcd(long long a,long long b){
        if(b==0)
        {
            x=1;
            y=0;
            return ; 
        }
        exgcd(b,a%b);
        long long z=x;
        x=y;
        y=z-(a/b)*y;
    }
    int main()
    {
        long long a,b;
        cin>>a>>b; 
        if(gcd(a,b)!=1)
        {
            cout<<-1<<endl;
            return 0;
        }
        exgcd(a,b);
        cout<<(x%b+b)%b<<endl;
    } 
    
  • 1

【模板】扩展欧几里得算法(exgcd)

信息

ID
1179
难度
9
分类
(无)
标签
(无)
递交数
3
已通过
1
通过率
33%
被复制
1
上传者