请教一下,如果同余的不是1,用扩展欧几里得需要做什么更改
查看原帖
请教一下,如果同余的不是1,用扩展欧几里得需要做什么更改
501630
旧城筱雨楼主2021/4/15 20:39

如题,本蒟蒻看了好久扩展欧几里得,但还是有一些不大理解,比如本题中同余得1,其中1体现在什么地方,如果换成别的数字比如2,3需要做什么更改,求教

#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#define ll long long

using namespace std;

ll exgcd(ll a, ll b, ll& x, ll& y)
{
	if(b == 0)
	{
		x = 1;
		y = 0;
		return a;
	}
	ll d = exgcd(b, a % b, y, x);
	y -= (a / b) * x;
	return d;
}

int main()
{
	ios::sync_with_stdio(false);
	ll a, b, x, y;
	cin >> a >> b;
	exgcd(a, b, x, y);
	ll res = (x % b + b) % b;
	cout << res;
	return 0;
}
2021/4/15 20:39
加载中...