描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。 每种金币小凯都有 无数个。 在不找零的情况下, 仅凭这两种金币,有些物品他是无法准确支付的。 现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币? 注意:输入数据保证存在 小凯无法准确支付的商品
输入
输入数据仅一行, 包含两个正整数 a 和 b, 它们之间用一个空格隔开, 表示小凯手中金币的面值
输出
输出文件仅一行,一个正整数 N,表示不找零的情况下, 小凯用手中的金币不能准 确支付的最贵的物品的价值。
样例输入
3 7
样例输出
11
【输入输出样例 1 说明】 小凯手中有面值为 3和 7的金币无数个,在不找零的前提下无法准确支付价值为 1、 2、 4、 5、 8、 11 的物品,其中最贵的物品价值为 11,比 11 贵的物品都能买到,比如:
12 = 3 * 4 + 7 * 0
13 = 3 * 2 + 7 * 1
14 = 3 * 0 + 7 * 2
15 = 3 * 5 + 7 * 0
……
【数据规模与约定】
对于 30%的数据: 1 ≤ a, b ≤ 50。
对于 60%的数据: 1 ≤ a, b ≤ 10,000。
对于 100%的数据: 1 ≤ a, b ≤ 1,000,000,000。
水题???
为什么我觉得不好想啊……证明辣么难
但各路大神纷纷表示打表打表打表
遇到数学问题就打表找规律
然后的然后就显而易见了
a n s = a ∗ b − ( a + b ) ans=a*b-(a+b) ans=a∗b−(a+b)
可我还是不服啊,为什么为什么为什么???
来乱胡证明一下,可以反证试一下:
假设存在一组正整数解使得 a x + b y = a ∗ b − a − b ax+by=a*b-a-b ax+by=a∗b−a−b
则 a ( x + 1 ) + b ( y + 1 ) = a b a(x+1)+b(y+1)=ab a(x+1)+b(y+1)=ab
发现 b ∣ ( x + 1 ) , a ∣ ( y + 1 ) b|(x+1),a|(y+1) b∣(x+1),a∣(y+1)(因为只有这样左边才可能含有a*b)
又因为 x > = 0 , y > = 0 x>=0,y>=0 x>=0,y>=0
–> x + 1 > = 1 , y + 1 > = 1 x+1>=1,y+1>=1 x+1>=1,y+1>=1
–> a ( x + 1 ) + b ( y + 1 ) > = a ∗ b + b ∗ a = 2 ∗ a b a(x+1)+b(y+1)>=a*b+b*a=2*ab a(x+1)+b(y+1)>=a∗b+b∗a=2∗ab
又已知 a ( x + 1 ) + b ( y + 1 ) = a b a(x+1)+b(y+1)=ab a(x+1)+b(y+1)=ab,则假设不成立,找不出一组解使得
a x + b y = a ∗ b − a − b ax+by=a*b-a-b ax+by=a∗b−a−b
那为什么大于这个 a ∗ b − a − b a*b-a-b a∗b−a−b的数又可以全部被凑出来呢??
(这段证明摘自这里)
对于任意正整数C>=ab−a−b+1
即C+a+b>=ab+1
设C+a+b=ka+m(k>=b,1<=m<=a−1)
注意到(a,b)=1
由裴蜀定理,知存在x0,y0∈Z使得
ax0+by0=1
故存在x1,y1∈Z,−(b−1)<=x1<=−1
使得ax1+by1=m
(解释一下,这里的意思其实是设−(b−1)<=x1<=−1,一定存在整数y1y1使得ax1+by1=m成立。原因就是在整数x1的取值中一共有b−1个数,y1=(m−ax1)/b,总是可以找到x1使得m−ax1能被b整除)
显然,y1>=1(ax1<0,m>0,b>0因此y1>=1)
于是,取x=k+x1−1,y=y1−1
注意到x1,y1的取值范围,得x,y>=0
得ax+by=C
所以任意C>=ab−a−b+1都存在x,y>=0,ax+by=C
证毕
还需要放???
当然不用