小凯的疑惑:给定正整数(a perp b),对于(x,y ge 0),求出(ax + by)无法表示的最大正整数。
一个经典思路是从同余最短路的角度看待这个问题:建立一个编号0~b-1的图,对于(0 le i le b-1),建边({i,(i+a) mod b,a}),初始时令(dis_0=0),跑dijkstra。这样我们就可以对于模b剩余系下的每一个值,求出能够表达它的最小正整数,然后答案就是(max{dis_i}-b)。
然而这样建出的图有一个重要性质,就是它恰好是一个长度为b的环,因此答案为(a(b-1)-b=ab-a-b),也就得到我们想要的结论。那么现在的关键问题就在于如何证明它是一个环,也即证明({0,a,2a,...,(b-1)a})在模b意义下两两不同余。
简单反证一下即可,假设(exist 0 le i < j le b-1),使得(ai equiv aj pmod b),即(a(i-j) equiv 0 pmod b implies b|a(i-j))。由于已知(a perp b),那么(b|i-j implies i-j equiv 0 pmod b implies i equiv j pmod b),显然与已知不符,假设不成立,证毕。
类比一下欧拉定理的证明过程,我们取了与b互质的数组成的集合(A={x_1,x_2,...,x_{phi(b)}}),给其中每一个元素乘上了a得到(B={ax_1,ax_2,...,ax_{phi(b)}}),因为B中每个元素与b互质且两两不同余,于是有(A=B)。这里的过程其实是类似的。