MYOJ_1349:(洛谷P3951)[NOIP 2017 提高组] 小凯的疑惑(数学公式套用,两步搞定代码)

提示

本题代码纯属数学的结晶,因此肥肠简单,但需要一定理解。

题目描述

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

注意:输入数据保证存在小凯无法准确支付的商品。

输入

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

输出

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

样例输入输出

输入 3 7

输出 11

思路

很好,现在到了展示公式的时间了。

有请 Frobenius数

有请 g(a,b)=ab−a−b

验证:

当a=3,b=7

g(3,7)=3×7−3−7=21−10=11g(3,7)=3×7−3−7=21−10=11**(✔)**

1.证明(反证法):

假设ab - a - b = ax + by,那么:

ab−a−b=ax+byab−a−b=ax+bya(b−1−x)=b(y+1)a(b−1−x)=b(y+1)

因为a和b互素,所以a必须整除y + 1。设y + 1 = ka,则:

a(b−1−x)=bkaa(b−1−x)=bkab−1−x=bkb−1−x=bkx=b−1−bkx=b−1−bk

因为x ≥ 0,所以:

b−1−bk≥0b−1−bk≥0b−1≥bkb−1≥bkk≤(b−1)/bk≤(b−1)/b

由于b ≥ 2(因为a和b互素且为正整数),(b - 1)/b < 1,而k是非负整数,所以k=0。

如果k=0,那么y + 1 = 0 ⇒ y = -1,这与y ≥ 0矛盾。因此,假设不成立,ab - a - b无法表示为ax + by。

2.证明任何大于ab - a - b的数都可以表示

考虑n > ab - a - b,即n ≥ ab - a - b + 1 = (a - 1)(b - 1)。

由于a和b互素,根据Schur's theorem或Coin Problem的理论,任何足够大的整数都可以表示为ax + by。具体来说,最大的不能表示的数是ab - a - b。

重磅代码
cpp 复制代码
#include<stdio.h>
long long a,b;
int main()
{
	scanf("%lld%lld",&a,&b);
	printf("%lld",a*b-a-b);
}
运行结果(这代码竟然被我过了一道洛谷黄题)
相关推荐
CoovallyAIHub8 分钟前
避开算力坑!无人机桥梁检测场景下YOLO模型选型指南
深度学习·算法·计算机视觉
YouQian77212 分钟前
问题 C: 字符串匹配
c语言·数据结构·算法
yanxing.D17 分钟前
408——数据结构(第二章 线性表)
数据结构·算法
艾莉丝努力练剑1 小时前
【LeetCode&数据结构】二叉树的应用(二)——二叉树的前序遍历问题、二叉树的中序遍历问题、二叉树的后序遍历问题详解
c语言·开发语言·数据结构·学习·算法·leetcode·链表
YuTaoShao1 小时前
【LeetCode 热题 100】51. N 皇后——回溯
java·算法·leetcode·职场和发展
1 小时前
3D碰撞检测系统 基于SAT算法+Burst优化(Unity)
算法·3d·unity·c#·游戏引擎·sat
Tony沈哲1 小时前
OpenCV 图像调色优化实录:基于图像金字塔的 RAW / HEIC 文件加载与调色实践
opencv·算法
Jackilina_Stone2 小时前
【faiss】用于高效相似性搜索和聚类的C++库 | 源码详解与编译安装
android·linux·c++·编译·faiss
我就是全世界2 小时前
Faiss中L2欧式距离与余弦相似度:究竟该如何选择?
算法·faiss
boyedu2 小时前
比特币运行机制全解析:区块链、共识算法与数字黄金的未来挑战
算法·区块链·共识算法·数字货币·加密货币