AcWing 203. 同余方程

it2025-11-10  8

题目

求关于x的同余方程 ax ≡ 1(mod b) 的最小正整数解。

输入格式 输入只有一行,包含两个正整数a,b,用一个空格隔开。

输出格式 输出只有一行,包含一个正整数x,表示最小正整数解。

输入数据保证一定有解。

数据范围 2≤a,b≤2∗109 输入样例: 3 10 输出样例: 7

思路

本题求线性同余方程,那么只要用扩展欧几里得算法求出特解,之后用(x % b + b) % b 求最小解即可

代码

#include <cstring> #include <iostream> #include <algorithm> using namespace std; typedef long long LL; int exgcd(int a, int b, int &x, int &y) { if (!b) { x = 1, y = 0; return a; } int d = exgcd(b, a % b, y, x); y -= a / b * x; return d; } int main() { int a, b; cin >> a >> b; int x, y; exgcd(a, b, x, y); cout << (x % b + b) % b << endl; return 0; }
最新回复(0)