洛谷题单指南-进阶数论-P1082 [NOIP 2012 提高组] 同余方程

原题链接:https://www.luogu.com.cn/problem/P1082

题意解读:求同余方程,扩展欧几里得算法的应用。

解题思路:

  转化为ax + by = 1的x的最小正整数解,数据保证一定有解,那么a、b一定互质

用扩展欧几里得算法求一个x的特解,再用(x + b) % b即得。

100分代码:

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

int a, b;

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

int main()
{
    cin >> a >> b;
    int x, y;
    exgcd(a, b, x, y);
    cout << (x % b + b) % b;
    return 0;
}

 

posted @ 2025-09-30 11:29  hackerchef  阅读(13)  评论(0)    收藏  举报