关于四川2019ACM省赛热身赛B题的一个证明

简单题意:给两个正整数\(a,b\),问\(ax+by\)中第\(k\)小的是什么
题解:大家基本都知道了。。\(lcm+d*gcd\)(\(d\)是某系数)
今天突然想起这个题,之前热身赛后没来得及证明,今天中午想了会儿就记下来(也不知道对不对)
首先,我们可以假设\(gcd(a,b)=1\),(如果不为\(1\)可以提出一个系数\(r\),处理过程一致)
对于\(ax+by=1\),我们可以求出\(x',y'\)满足\(ax'+by'=1\),现在我们的目标就是求出一个最小的\(c\),存在 \(x''\ge0,y''\ge0\),使得 \(ax''+by''=c\)
我们可以得到一个 \(x''=cx',y''=cy'\),使得 \(ax''+by''=c\), 又所有解的形式为:\(x=x''+kb,y=y''-ka\)
于是,\(\begin{array}{lcl} x''+kb\ge0 \\ y''-ka\ge0\\ \end{array}\) \(\rightarrow\)\(\begin{array}{lcl} cx'+kb\ge0 \\ cy'-ka\ge0\\ \end{array}\)\(\rightarrow\)\(\begin{array}{lcl} k\ge-\frac{cx'}{b} \\ k\le\frac{cy'}{a}\\ \end{array}\) \(\rightarrow\) \(k\in\) \(\left[\frac{-cx'}{b},\frac{cy'}{a} \right]\)
于是\(k\)有解,当且仅当\(\frac{-cx'}{b} \le\frac{cy'}{a}\) \(\rightarrow\) \(\frac{cy'}{a}\) + \(\frac{cx'}{b}\) \(\ge\ 0\)
现在问题清晰了,我们需要最小的\(c\),满足\(a|c,b|c\)
于是\(c=lcm\left(a,b\right)\) \(\rightarrow\ by'+ax'=1\ge0\)

posted @ 2019-06-11 17:01  sienna  阅读(297)  评论(0编辑  收藏  举报