[NOIP2017TG] 洛谷 P3951 小凯的疑惑

暴力

先考虑一种暴力解法:使用类似于NOIP2018D1T2的完全背包,枚举a和b的个数。不过,我们很快发现不能表出的值在增大,却又无法确定何时最大。至少这个思路提供了一个大致方向:枚举。

假设对于一个需被表出的面额k,先枚举b的个数,再确定余下\(k-yb\,(y\in\mathbb{N})\)能否被a整除。这就出现了一个性质:

\[(k-yb)\,mod\,b=k\,mod\,b \]

考虑对模b的余数进行处理:多加几个b,直到它能被a整除为止。

具体地说,我们需要确定最小的自然数n,使\(a|(nb+k\,mod\,b)\)。这时可明确,最大值一定存在。

证明:\(0,a,2a,3a...(b-1)a\) 分别\(\,mod\,b\),所得余数一定与\([0,b-1]\)一一对应。

假设\(pa\equiv qa\,(mod\,b)\,(p<q,p,q\in [0,b-1])\),必有\(b|(q-p)a\),由a b互质得出\(b|(q-p)\)。但又有\(q-p<b\),矛盾。

\(\forall k\in (ab-a,\infty)\),存在\(m\in [0,b-1]\)使得\(ma\equiv k\,(mod\,b)\),推得\(k-ma\equiv0\,(mod\,b)\),则\(k=ma+\frac{k-ma}{b}\times b\)

此时已确定\([ab-a,\infty)\)皆可被表出。

更进一步

之后的事就很简单了。为方便研究,不妨设\(a<b\)

\(ab-a\)覆盖的余数为\(b-a\),意味着模b得其他余数的k皆可被表出。

而上一个模b得到\(b-a\)的数,就是第一个不可被表出的数了。即答案为

\[ab-a-b \]

posted @ 2019-10-18 18:02  _wkjzyc  阅读(135)  评论(0编辑  收藏  举报