华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1029|回复: 3
打印 上一主题 下一主题

洛谷3951 NOIP2017 小凯的疑惑(Day 1 T1)

[复制链接]

5

主题

21

帖子

63

积分

华一学生

积分
63
跳转到指定楼层
楼主
发表于 2018-6-5 17:31:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 WWX 于 2018-6-5 17:34 编辑

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

两个正整数 a 和 b,它们之间用一个空格隔开,表示小凯中金币的面值。

输出格式:

一个正整数 N ,表示不找零的情况下,小凯用手中的金币不能准确支付的最贵的物品的价值。

样例输入:3 7
样例输出:11





回复

使用道具 举报

5

主题

21

帖子

63

积分

华一学生

积分
63
沙发
 楼主| 发表于 2018-6-5 17:38:48 | 只看该作者
a*b-a-b即是要求的解
我们可以简单的证明一下
证明当k>ab-a-b时,小凯可以准确支付这个物品。
显然,可以列出一个不定方程ma+nb=k,(m n,为未知数)由于m,n是金币个数,所以m>-1,n>-1,
这个不定方程的通解为m=m0+bt,n=n0-at,(仅仅为写法的一种,不过这样写最方便,m0,n0为方程的一组解),
m0+bt>-1,n0-at>-1,化简后有-(m0+1)/b<t<(n0+1)/a,
显然(n0+1)/a-(-(m0+1)/b)=(n0+1)/a+(m0+1)/b=(bn0+b+a+am0)/ab,
又因为bn0+am0=k.所以原式等于(k+a+b)/ab,显然k+a+b>ab,所以原式大于1,所以区间(-(m0+1)/b,(n0+1)/a,)中必有一个整数,t一定存在,所以命题成立。
回复 支持 反对

使用道具 举报

7

主题

27

帖子

91

积分

注册会员

Rank: 2

积分
91
板凳
发表于 2018-6-5 17:39:12 | 只看该作者
  1. #include <cstdio>
  2. typedef long long LL;
  3. int main() {
  4.     LL a,b,c;
  5.     scanf("%lld%lld", &a, &b);
  6.     c = a * b - a - b;
  7.     printf("%lld", c);
  8.     return 0;
  9. }
复制代码
回复 支持 反对

使用道具 举报

5

主题

21

帖子

63

积分

华一学生

积分
63
地板
 楼主| 发表于 2018-6-5 17:41:02 | 只看该作者
我们再可以利用反证法和整除的知识证明a*b-a-b一定不可以被支付(不是很难,过程就不写了)
所以答案就是a*b-a-b,代码就不贴了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-3 02:21 , Processed in 0.122235 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表