返回介绍

solution / 2900-2999 / 2979.Most Expensive Item That Can Not Be Bought / README

发布于 2024-06-17 01:02:58 字数 2673 浏览 0 评论 0 收藏 0

2979. 最贵的无法购买的商品

English Version

题目描述

给定两个 不同的质数 primeOne 和 primeTwo

Alice 和 Bob 正在逛市场。该市场有 无数种 商品,对于 任何 正整数 x,都存在一个价格为 x 的物品。Alice 想从市场里买一些东西送给 Bob。她有 无数个 面值为 primeOneprimeTwo 的硬币。她想知道她 无法 用她拥有的硬币购买的 最贵 商品的价格。

返回 _Alice 无法买给 Bob 的 最贵 商品的价格。_

 

示例 1:

输入:primeOne = 2, primeTwo = 5
输出:3
解释:无法购买的商品的价格有 [1,3]。所有价格大于 3 的商品都可以通过组合使用面额为 2 和 5 的硬币购买。

示例 2:

输入:primeOne = 5, primeTwo = 7
输出:23
解释:无法购买的商品的价格有 [1,2,3,4,6,8,9,11,13,16,18,23]。所有价格大于 23 的商品都可以购买。

 

提示:

  • 1 < primeOne, primeTwo < 104
  • primeOne, primeTwo 都是质数。
  • primeOne * primeTwo < 105

解法

方法一:Chicken McNugget 定理

根据 Chicken McNugget 定理,两个互质的正整数 $a$ 和 $b$,最大不能表示的数为 $ab - a - b$。

时间复杂度 $O(1)$,空间复杂度 $O(1)$。

class Solution:
  def mostExpensiveItem(self, primeOne: int, primeTwo: int) -> int:
    return primeOne * primeTwo - primeOne - primeTwo
class Solution {
  public int mostExpensiveItem(int primeOne, int primeTwo) {
    return primeOne * primeTwo - primeOne - primeTwo;
  }
}
class Solution {
public:
  int mostExpensiveItem(int primeOne, int primeTwo) {
    return primeOne * primeTwo - primeOne - primeTwo;
  }
};
func mostExpensiveItem(primeOne int, primeTwo int) int {
  return primeOne*primeTwo - primeOne - primeTwo
}
function mostExpensiveItem(primeOne: number, primeTwo: number): number {
  return primeOne * primeTwo - primeOne - primeTwo;
}
impl Solution {
  pub fn most_expensive_item(prime_one: i32, prime_two: i32) -> i32 {
    prime_one * prime_two - prime_one - prime_two
  }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文