Description

求同余方程 \(ax \equiv 1 (\bmod\ b)\) 的最小正整数解。

Solution

转化为求解方程 \(ax+by \equiv 1 (\bmod \ b)\)\(x\) 的最小正整数解。

我们可以先暴力用 exgcd 解出 \(x\),然后令 \(x=(x+b) \bmod \ b\) 即可。

#include <bits/stdc++.h>
using namespace std;

#define int long long 
const int N = 1000005;

int a,b;

inline void exgcd(int a,int b,int &x,int &y) 
{
    if(!b) 
    {
        x=1,y=0;
        return;
    }
    exgcd(b,a%b,x,y);
    int t=x;
    x=y,y=t-(a/b)*y;
}

signed main()
{
    ios::sync_with_stdio(false);

    cin>>a>>b;
    int x,y;
    exgcd(a,b,x,y);
    x=(x+b)%b;
    cout<<x<<endl;

    system("pause");
}

相关文章:

  • 2022-12-23
  • 2021-12-14
  • 2021-11-24
  • 2022-12-23
猜你喜欢
  • 2021-11-18
  • 2022-12-23
  • 2022-03-02
  • 2021-08-10
  • 2022-12-23
  • 2022-12-23
  • 2021-06-14
相关资源
相似解决方案