这题的结论是a∗b−a−ba*b-a-ba∗b−a−b,但是我之前一直不理解为什么,于是现在来证明(玩)一下。
条件:gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1
先用比较通俗的语言讲解一下我的思路。
不妨假设a<ba<ba<b
我们固定着先不用a,然后只用b。
那就可以跳到b,2b,3b⋅⋅⋅b,2b,3b···b,2b,3b⋅⋅⋅这些位置上。(也就是可以支付这些值的意思)
假设当前跳了ttt步,我们记tbtbtb与在tbtbtb左边且最近的aaa的倍数的距离为distdis_tdist,不难想象,每跳一步,disdisdis的值就会发生一定的改变。如果所有的disdisdis能够覆盖0,,1,2,⋅⋅⋅a−10,,1,2,···a-10,,1,2,⋅⋅⋅a−1,那么我们就可以利用这些dis对应的起点,加上若干个aaa,从而实现从某个点开始,后面所有的点都可以被跳到。
那我们就要看一下disdisdis到底可不可以覆盖所有的这aaa个值呢?(其中0其实可以不必被覆盖到),答案是可以的。譬如说a=5,b=7a=5,b=7a=5,b=7,那么
- dis1dis_1dis1=2
- dis2dis_2dis2=4
- dis3dis_3dis3=1
- dis4dis_4dis4=3
- dis5dis_5dis5=0
发现当跳4次的时候disdisdis就已经覆盖了所有的4个值(0可以不管)。
事实上,只要a,ba,ba,b互质,那么b,2b,3b⋅⋅⋅,(a−1)b,abb,2b,3b···,(a-1)b,abb,2b,3b⋅⋅⋅,(a−1)b,ab,这aaa个数对应的disdisdis就互不相同,其实这个disdisdis也就是对aaa取余后的数。也就是说aaa个余数各不相同,构成了aaa的一个完全剩余系。不过可以去掉0,所以跳a−1a-1a−1次就够了。这个结用反证法很容易可以证明。
接下来由于我表达能力不足可能说不太清楚。
最后一个被跳到的就是(a−1)b(a-1)b(a−1)b,那从它开始后面的肯定全部都可以被跳到了。譬如(a−1)b+1(a-1)b+1(a−1)b+1可以由之前某个满足dis?=disa−1+1dis_{?}=dis_{a-1}+1dis?=disa−1+1的步数加上若干个aaa获得。
不过(a−1)b(a-1)b(a−1)b前面实际上也还有一串连续的数可以被跳到,譬如(a−1)b−1(a-1)b-1(a−1)b−1可以由之前某个满足dis?=disa−1−1dis_{?}=dis_{a-1}-1dis?=disa−1−1的步数加上若干个aaa获得。所以最后一个不能被跳到的数是a∗b−a−ba*b-a-ba∗b−a−b
之后再用形式化的数论语言把证明过程写一遍。
aswl,写Markdown和LaTeX好累啊。

本文通过直观的解释和严谨的数论语言,证明了当两个正整数a和b互质时,所有大于a*b-a-b的整数都可以表示为a和b的线性组合。这一结论在数论和算法设计中有着广泛的应用。
1921

被折叠的 条评论
为什么被折叠?



