我是靠谱客的博主 淡定发带,最近开发中收集的这篇文章主要介绍【提高组NOIP2017】小凯的疑惑(附证明),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

小凯的疑惑

描述
小凯手中有两种面值的金币,两种面值均为正整数且彼此互素。 每种金币小凯都有 无数个。 在不找零的情况下, 仅凭这两种金币,有些物品他是无法准确支付的。 现在小 凯想知道在无法准确支付的物品中,最贵的价值是多少金币? 注意:输入数据保证存在 小凯无法准确支付的商品

输入
输入数据仅一行, 包含两个正整数 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=ab(a+b)

可我还是不服啊,为什么为什么为什么???
来乱胡证明一下,可以反证试一下:
假设存在一组正整数解使得 a x + b y = a ∗ b − a − b ax+by=a*b-a-b ax+by=abab
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)>=ab+ba=2ab
又已知 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=abab

那为什么大于这个 a ∗ b − a − b a*b-a-b abab的数又可以全部被凑出来呢??
(这段证明摘自这里)
对于任意正整数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】小凯的疑惑(附证明)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部