题目描述

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

这是今年NOIP的第一题,也是断送我OI生涯的一道题目。这是我记忆中NOIP第一次出现结论题,也是我唯一做不出来的第一题。身边的大佬一个个秒掉了它,兄弟学校的同学也几乎都YY出了正解。就我特么一个30分,然后T2,T3又写爆,Day1爆萎,一百分出头,于是就注定退役了。

还是先说说这道题目吧,其实就是要你求一个使得如下不定方程:

​ \(a_1x_1+a_2x_2=c\) \(((a_1,a_2)=1)\)

无非负整数解的最大\(c\) 。结论很简单:

​ \(c=a_1a_2-a_1-a_2\)

这个结论的形式还是非常优美的,根据一些小数据其实很容易推出来。然而我比较脑残,并不能看出来。但正确性并不显然,我试着用ex_gcd推了一下,好像并没有发现什么很好的思路。后来在《初等数论》中找到了一种较为简单的证明,如下:

设\(x_{1,0}\) , \(x_{2,0}\)为方程特解,则对于参数\(t^{[1]}\)$有

​ \(-[x_{1,0}/a_2]-\{x_{1,0}/a_2\}=-x_{1,0}/a_2 \leq t \leq x_{2,0}/a_1=[x_{2,0}/a_1]+\{x_{2,0}/a_1\}\)

又\(0 \leq \{x\} < 1\) , 所以

​ \(-[x_{1,0}/a_2] \leq t \leq[x_{2,0}/a_1]\)

故解数\(N_0\)满足

​ \(N_0=[x_{1,0}/a_2]+[x_{2,0}/a_1]+1\)

当\(c>a_1a_2-a_1-a_2\)时

​ \(1-1/a_1-1/a_2<c/a_1a_2=x_{1,0}/a_2+x_{2,0}/a_1=[x_{1,0}/a_2]+\{x_{1,0}/a_2\}+[x_{2,0}/a_1]+\{x_{2,0}/a_1\} \leq [x_{1,0}/a_2]+[x_{2,0}/a_1]+(a_1-1)/a_1+(a_2-1)/a_2\)

(对于任意正整数n及正整数m必有\(\{m/n\}\leq (n-1)/n\) )\(^{[2]}\)

则有

​ \([x_{1,0}/a_2]+[x_{2,0}/a_1]>-1\)

即\(N_0>0\) ,所以必有解

下证当\(c=a_1a_2-a_1-a_2\)时方程无非负整数解

若有解\(x_1\) , \(x_2\),则有

​ \(a_1(x_1+1)+a_2(x_2+1)=a_1a_2\)

又\((a_1,a_2)=1\) , 所以

​ \(a_1|x_2+1\) 且 \(a_2|x_1+1\)

又\(x_1 \geq 0\) 并且\(x_2 \geq 0\) , 则必有\(x_2+1 \geq a_1 \geq 1\) ,\(x_1 \geq a_2 \geq 1\)

综上得

​ \(a_1a_2 \geq 2a_1a_2\)

显然不等式不成立,故当\(c=a_1a_2-a_1-a_2\)时方程无解

于是NOIPD1T1就做完了23333

注:

1).此方程的已知所有解可以有如下表示:

​ \(\begin{cases} x_1=x_{1,0}+\frac{a_2}{(a_!,a_2)}t\\x_2=x_{2,0} - \frac{a_1}{(a_1,a_2)}t \end{cases}\)

2).因为对于任何\(m/n\) 均有

​ \(m/n=k \frac{p}{n}\) \((p<n)\)

​ 所以

​ \(\{m/n\}=p/n\)

​ 又对任意真分数均有

​ \(p/n \leq (n-1)/n\)

​ 所以

​ \(\{m/n\} \leq (n-1)/n\)

NOIP2017 小凯的疑惑的更多相关文章

  1. 【比赛】NOIP2017 小凯的疑惑

    找规律:ans=a*b-a-b 证明:(可见 体系知识) gcd(A, B) = 1 → lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m ...

  2. 联赛膜你测试20 T1 Simple 题解 && NOIP2017 小凯的疑惑 题解(赛瓦维斯特定理)

    前言: 数学题,对于我这种菜B还是需要多磨啊 Simple 首先它问不是好数的数量,可以转化为用总数量减去是好数的数量. 求"好数"的数量: 由裴蜀定理得,如果某个数\(i\)不能 ...

  3. NOIP2017 小凯的疑惑 解题报告(赛瓦维斯特定理)

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的 ...

  4. 题解【洛谷P3951】[NOIP2017]小凯的疑惑

    题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想知道在无法准确支付的物品中,最贵的 ...

  5. luogu2951 noip2017 小凯的疑惑

    在考场上我们可以打表发现规律是 $ ab-a-b $ .下面给出证明(看的网上的). 若有正数 $ x $ 不能被 $ a $ , $ b $ 组合出,假设 $ a>b $ ,则存在 \[ x= ...

  6. luogu 3951 小凯的疑惑

    noip2017 D1T1 小凯的疑惑 某zz选手没有看出这道结论题,同时写出了exgcd却不会用,只能打一个哈希表骗了30分 题目大意: 两个互质的正整数a和b,求一个最小的正整数使这个数无法表示为 ...

  7. Luogu [P3951] 小凯的疑惑

    题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可 ...

  8. NOIP 2017 小凯的疑惑

    # NOIP 2017 小凯的疑惑 思路 a,b 互质 求最大不能表示出来的数k 则k与 a,b 互质 这里有一个结论:(网上有证明)不过我是打表找的规律 若 x,y(设x<y) 互质 则 : ...

  9. 2017提高组D1T1 洛谷P3951 小凯的疑惑

    洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...

随机推荐

  1. centos 源码安装python

    一.准备环境 首先在官网下载想要的python对应版本http//www.python.org/downloads/source 下载tgz就可以了.文件有两种 1,Python-版本号.tgz(解压 ...

  2. R语言高性能编程,优化(一)

    这段时间学习了<R高性能编程>这本书,基于这段时间做的项目实践,总结了一些自己的体会,和大家分享 一.为什么R程序有时候会很慢?1.计算性能的三个限制条件 cpu ram io R代码本身 ...

  3. B树,B+树,B*树

    参考资料 http://www.cnblogs.com/Bob-FD/archive/2012/06/20/2556505.html 第一节.B树.B+树.B*树 1.前言: 动态查找树主要有:二叉查 ...

  4. VS2012环境下C#调用C++生成的DLL

    1.VS2012 C++生成DLL 这个过程仿照http://www.cnblogs.com/LCCRNblog/p/3625200.html创建DLL即可,暂时不用创建测试工程,因为下面有测试工程的 ...

  5. 1016: [JSOI2008]最小生成树计数

    1016: [JSOI2008]最小生成树计数 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6200  Solved: 2518[Submit][St ...

  6. [DeeplearningAI笔记]ML strategy_2_3迁移学习/多任务学习

    机器学习策略-多任务学习 Learninig from multiple tasks 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.7 迁移学习 Transfer Learninig 神 ...

  7. jsp静态与动态包含的区别和联系

    1. <%@ include file=” ”%>是指令元素.<jsp:include page=” ”/>是行为元素 2. 最终编译成java文件的数目不同. * 静态包含在 ...

  8. 用户需求与NABCD分析

    用户需求与NABCD分析 目录 项目简介 用户需求分析 调研途径 问卷情况说明 问卷反馈与分析 NABCD分析 Need 需求 Approach 途径 Benefit 好处 Competitors 竞 ...

  9. javascript 中遍历数组的简单方法

    在Javascript中有自带方便遍历数组的方法(此方法非彼方法不要误会哦): 1 .利用for( index in array ){}; 2.利用 array.forEach( function(e ...

  10. js判断对象为空 JSON.stringify(obj)

    JSON.stringify(obj) : 用于从一个对象解析出字符串 var c = {}; if(JSON.stringify(obj) == "{}"){ console.l ...