题目大意:已知a,m,求同余方程 x的最小正整数解
同余的充要条件是 ax-1是m的整数倍(可以自己尝试证明),因此有ax-1=m*k,变形可得不定方程,显然1为gcd(a,m),那么我们可以用扩展欧几里得算法直接求出x和y的一组解
但是,题目要求最小正整数解,怎么办呢?显然我们必须先知道通解的表达式
假设对于任意一个不定方程我们得到了两组解(x1,y1)和(x2,y2),则有ax1+by1=ax2+by2;变形可得a(x1-x2)=b(y2-y1),两边同时除以gcd(a,b),得a'(x1-x2)=b'(y2-y1),其中a'=a/gcd(a,b),b'=b/gcd(a,b),我们不难证明,此时a'和b'互素,因此x1-x2一定为b'的整数倍,同理y2-y1一定为a'的整数倍,所以我们有不定方程的通解:
其中x0,y0为任意一组解,
那么,到这里,只用判断一下x的符号,略作修改即可
1. x > 0 x=x%m
2. x = 0 x=m
3. x < 0 x=m - (-x)%m
具体为什么大家自己推一下吧,应该很快的吧...