[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
\]