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;
    }
}

最后

更多系列「外源推文」&「生活分享」关注公众号: