题目
求关于 xx 的同余方程 ax \equiv 1 \pmod{b}ax≡1(modb) 的最小正整数解。
思路
利用欧几里得算法即可求解,注意结果为负是要取余再加模
代码
#include<iostream>
#include<stdio.h>
using namespace std;
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, x, y);
int z = x;
x = y, y = z - y * (a/b);
return d;
}
int main()
{
int a, b;
scanf("%d %d", &a, &b);
int x, y;
int d = exgcd(a, b, x, y);
//printf("x=%d, y=%d\n", x, y);
int t = -x/b + 1;
x = x % b;
if(x < 0) x += b;
printf("%d\n", x);
return 0;
}