NOIP小凯的疑惑
题目描述:
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。每种金币小凯都有无数个。在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的。现在小凯想知道在无法准确支付的物品中,最贵的价值是多少金币?注意:输入数据保证存在小凯无法准确支付的商品。
输入输出
输入数据仅一行,包含两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯手中金币的面值。
输出文件仅一行,一个正整数 N,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。
题目分析
引理——裴蜀定理:对于任何整数\(a,b\) 和 \(d = gcd(a, b)\)来说,对于任意\(x,y\)来说,\(ax+by\)都是d的倍数,进而存在\(x,y\)使\(d = ax+by\)。
于是本题就可以得到以下结论:
①如果数\(t\)可以被\(a,b\)表示,那么\(t+a,t+b\)也一定可以
②存在整数\(x,y,1 = ax+by\),且\(min(a,b)a|x|+min(a,b)b|y|\) 及其以上的数都可被\(a,b\)表示
③不妨假设\(a<b\),那么能用\(a,b\)表示的数也一定写成\(kb+ta\)的形式,其中\(a-1>=k>=0,t>=0\),并且\(k,t\)不同时为\(0\)
因此一种可行的办法是先遍历找到\(x,y\),之后再回头验证比\(min(a,b)a|x|+min(a,b)b|y|\)小的数中不符合③中形式的最大的数
事实上,塞瓦维斯特定理已经告诉我们本题的答案是\(ab-a-b\),所以本题是一个很吃结论的题,至于上述定理吧的证明可以直接上网查,与算法关系不大,这里就不多介绍。