概述
小凯的疑惑
描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。 每种金币小凯都有 无数个。 在不找零的情况下, 仅凭这两种金币,有些物品他是无法准确支付的。 现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币? 注意:输入数据保证存在 小凯无法准确支付的商品
输入
输入数据仅一行, 包含两个正整数 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。
Analysis
水题???
为什么我觉得不好想啊……证明辣么难
但各路大神纷纷表示打表打表打表
遇到数学问题就打表找规律
然后的然后就显而易见了
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
证毕
Code
还需要放???
当然不用
最后
以上就是淡定发带为你收集整理的【提高组NOIP2017】小凯的疑惑(附证明)的全部内容,希望文章能够帮你解决【提高组NOIP2017】小凯的疑惑(附证明)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复