2979. 最贵的无法购买的商品
前言
「力扣题解」系列致力于分享有价值的题目、探讨更优秀的解法。
这是本系列的第 16 篇题解,更多题解关注 Somnia1337@力扣。
题目描述
难度:🟡中等
给定两个 不同的质数 primeOne
和 primeTwo
,你有 无数个 面值为 primeOne
和 primeTwo
的硬币,返回 无法 用这两种硬币凑出的最大面值。
输入: primeOne=2, primeTwo=5
输出: 3
解释: 无法凑出的面值有 [1,3], 所有大于 3 的面值均可凑出
解题思路
麦乐鸡定理 (Chicken McNugget Theorem):对任意互质的 ,无法表示为 () 形式的最大整数为 。
证明:
由 贝祖定理 (Bézout’s Theorem):设 是不全为 的整数,,使 ,其中 表示最大公约数。
导出:对 且 , 互质,,,考察不定方程 ,如果方程有解,称 可由 , 表出。
记 ,由于 , 互质, 必为奇数,从而有结论:, 和 中有且仅有一个可由 , 表出。
也即:可表出的数字与不可表出的数字在区间 对称,如 可表出、 不可表出, 可表出、负数不可表出。
复杂度
- 时间复杂度:
- 空间复杂度:
代码
Java
class Solution {
public int mostExpensiveItem(int primeOne, int primeTwo) {
return primeOne * primeTwo - primeOne - primeTwo;
}
}
最后
更多系列「外源推文」&「生活分享」关注公众号: