求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解。
【分析】
扩展欧几里德算法求解
注意防止负数情况(最小正整数解)
【代码】
//NOIP 2012 同余方程
#include<iostream>
#include<cstdio>
#define fo(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
void exgcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;y=0;
return;
}
exgcd(b,a%b,y,x);
y=y-(a/b)*x;
}
int main()
{
int a,b,x,y;
scanf("%d%d",&a,&b);
exgcd(a,b,x,y);
x=(x%b+b)%b;
printf("%d\n",x);
return 0;
}