目录

1518:换水问题(1245 分)

力扣第 198 场周赛第 1 题

题目

超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。

如果喝掉了水瓶中的水,那么水瓶就会变成空的。

给你两个整数 numBottlesnumExchange ,返回你 最多 可以喝到多少瓶水。

示例 1:

输入:numBottles = 9, numExchange = 3
输出:13
解释:你可以用 3 个空瓶兑换 1 瓶水。
所以最多能喝到 9 + 3 + 1 = 13 瓶水。

示例 2:

输入:numBottles = 15, numExchange = 4
输出:19
解释:你可以用 4 个空瓶兑换 1 瓶水。
所以最多能喝到 15 + 3 + 1 = 19 瓶水。

提示:

  • 1 <= numBottles <= 100
  • 2 <= numExchange <= 100

相似问题:

分析

可以模拟,也可以直接用数学

  • numExchange 个空瓶换一瓶水,喝完得到一个空瓶
  • 因此相当于 numExchange-1 个空瓶换一瓶瓶里的水
  • 注意最后刚好剩 numExchange-1 个空瓶时,不能再换
  • 所以总共能换 (numBottles-1)//(numExchange-1) 瓶水

解答

1
2
3
class Solution:
    def numWaterBottles(self, numBottles: int, numExchange: int) -> int:
        return numBottles+(numBottles-1)//(numExchange-1)

41 ms