题目如下
![](https://i-blog.csdnimg.cn/blog_migrate/9e6693d8b3a743a236d4779b2d2dd919.png)
解题思路:
线性同余方程,可以使用扩展欧几里得算法来求。
套入模板求出来即可
模板如下:
int Exgcd(int a, int b, int &x, int &y) {
if (!b) {
x = 1;
y = 0;
return a;
}
int d = Exgcd(b, a % b, x, y);
int t = x;
x = y;
y = t - (a / b) * y;
return d;
}
解题代码:
#include <iostream>
using namespace std;
long long exgcd(long long a, long long b, long long &x, long long &y) { //扩展欧几里得算法
if (b == 0) {
x = 1;
y = 0;
return a;
}
long long xx, yy, d;
d = exgcd(b, a % b, xx, yy);
x = yy;
y = xx - a / b * yy;
return d; //返回最大公约数
}
int main() {
long long a, b, x, y;
cin >> a >> b;
exgcd(a, b, x, y); //调用函数
while (x < 0) //确保解为正整数
x += b;
cout << x << endl;
return 0;
}